02. OOP(Object Oriented Programming)
왜 학교 다닐 땐, 이 개념이 이해가 되지 않았을까요?
오늘 주제는 개발을 업으로 삼고서야 정리가 와닿는 [객체지향 프로그래밍] 입니다.
* 객체지향 프로그래밍의 장점
: 유지/보수 용이함
특징1. 추상성
: 클래스 처럼 동일한 기능을 하는 것끼리 묶어둠
: 객체들의 공통적인 성질(프로퍼티 or 메소드)을 묶어 놓는 것
특징2. 캡슐화
: 객체는 메소드를 통해서만 변동 되어야 한다. 다른 객체를 통해 변형하는 것이 어렵거나 불가능하게 설계한다.
사용자에 의해 객체가 쉽게 변한다면, 프로그램이 불안정하다.
특징3. 상속
: 부모 클래스로 부터 물려 받는다.
예) 채용 프로세스에서 서류를 통과해야만 면접을 볼 수 있다고 가정할 때, 면접 지원자 모두는 서류 통과라는 클래스를 상속 받은 것
특징4. 다형성
: 동일한 명칭의 다양한 형태를 인정한다. 같은 모습의 코드가 다른 행위를 하는 것.
예) 핸드폰 터치하는 동작 = 전화걸기/ 문자하기/ 게임하기
▶ 다형성을 추구하지 않으면? 비효율적이다.
전화거는 키패드/ 게임용 키패드/ 문자보내는 전용 키패드를 각각 따로 만들어야 한다
- 오버로딩: 하나의 클래스에서 같은 이름의 메소드를 여러개 가질 수 있음.
유사한 일을 수행하면서 인자만 다른 메소드들에 대해 각기 다른 이름을 준다면 사용하기 불편하다.
인자의 타입이나 개수가 다르면 메소드 이름이 같더라도 어떤 메소드를 호출할지 컴파일러가 알 수 있다.
- 오버라이딩: 슈퍼클래스를 상속받은 서브 클래스에서 슈퍼클래스의 메소드를 동일한 이름/인자/반환 값으로 새롭게 정의.
슈퍼클래스를 상속 받는 여러 서브클래스들이 같은 이름에 다른 기능을 하는 메소드를 정의하고 사용 할 수 있음.
'개발 이야기 > Java' 카테고리의 다른 글
04. Java의 변수타입과 그 종류 (0) | 2019.09.28 |
---|---|
03. JSP Vs Javascript (0) | 2018.07.11 |
Try ~Catch 문과 Exception처리 (0) | 2018.06.28 |
Tip) [SimpleDateFormat] String ↔ Date (0) | 2016.10.13 |
Tip) eclipse에서 workspace 변경하는 방법 (0) | 2016.06.23 |