[JAVA]

18. 객체지향 프로그래밍_2 (2/2)

혜리노베이션 2023. 5. 25. 20:30

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)


- 이름 없는 일회용 클래스
- 정의와 생성을 동시에 한다.