18. 객체지향 프로그래밍_2 (2/2)
1. 접근제어자: 4개 중 1개만 사용할 수 있다
1) private: 같은 클래스 내에서만 접근이 가능하다
2) (default): 같은 패키지 내에서만 접근이 가능하다
3) protected: 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다
4) public: 접근 제한이 전혀 없다
2. 캡슐화
- 데이터를 보호하기 위해서 접근제어자를 사용한 것
- 외부에는 불필요하고 내부적으로만 사용되는 부분을 감추기 위해서 사용한 것
3. 다형성
- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
* 자손 타입의 참조변수로 조상 타입의 객체를 가르킬 수 없다
4. 참조변수의 형변환
- 사용할 수 있는 멤버의 개수를 조절하는 것
5. instanceof 연산자
- 참조변수의 형변환 가능 여부 확인에 사용 *가능하면 true 반환
- 반드시 instanceof로 확인 후 형변환을 진행한다.
- 조상 클래스는 true
6. 매개변수의 다형성
- 참조형 매개변수는 메서드 호출 시 *자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.
장점:
1. 조상타입의 참조변수로 자손 객체 다루기
2. 참소변수의 형변환
3. instanceof 연산자
7. 여러 종류의 객체를 배열로 다루기
8. 추상클래스 (abstract class)
- 추상메서드를 갖고 있는 클래스
- 다른 클래스 작성에 도움을 주기 위한 것이다. *인스턴스 생성 불가
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 사용
- 추상메서드 호출 가능 *호출할 때는 선언부만 필요
9. 추상클래스의 작성
- 여러 클래스의 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나
- 기존클래스의 공통 부분을 뽑아서 추상클래스를 만든다
10. 인터페이스(interface)
- 추상메서드의 집합
- 구현된 것이 전혀 없는 설계도 *모든 멤버가 public
- 추상클래스와의 차이점: 추상클래스는 추상메서드(iv)를 갖고 있는 클래스이고, 인터페이스는 아무것도 없다
- 인터페이스의 조상은 인터페이스만 가능 (object X)
- 다중 상속이 가능하다
- 인터페이스의 구현: 인터페이스의 정의된 추상 메서드를 완성하는 것
11. 인터페이스(interface)를 이용한 다형성
- 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능
- 인터페이스를 메서드의 리턴타입으로 지정할 수 있다.
12. 디폴트 메서드와 ststic메서드
- 인터페이스에 새로운 메서드를 추가하는 것이 어렵기 때문에 디폴트 메서드를 사용한다.
* 추상메서드 추가 시 구현중인 클래스에 많은 변화가 일어남
** 다양한 충돌에 대해 오버라이딩 또는 조상클래스에 상속 등으로 해결함
13. 내부클래스(inner class)
- 외부 클래스 내부에 있는 클래스
- 내부클래스에서 외부클래스의 멤버들에 쉽게 접근할 수 있다.
- 코드의 복잡성을 줄일 수 있다 *캡슐화
14. 내부클래스의 제어자와 접근성
- 내부클래스의 제어자는 변수에 사용 가능한 제어자와 동일
15. 익명클래스 (anonymous class)
- 이름 없는 일회용 클래스
- 정의와 생성을 동시에 한다.