728x90
제어자
클래스와 클래스의 맴버(맴버 변수, 메서드)에 부가적인 의미 부여
- 접근 제어자 : public, default, protected, private
- 그 외 : static, final, abstract, native, transient, 등
final
- 클래스 : 변경될 수 없는 클래스, 확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다.
- 메서드 : 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다.
- 맴버변수, 지역변수 : 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다.
abstract
- 클래스 : 클래스 내에 추상 메서드가 선언되어 있음을 의미한다.
- 메서드 : 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다.
접근 제어자
- private : 같은 클래스 내에서만 접근이 가능하다.
- default : 같은 패키지 내에서만 접근이 가능하다.
- protected : 같은 패키지 내에서 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다.
- public : 접근 제한이 전혀 없다.
캡슐화와 접근 제어자
접근 제어자를 사용하는 이유
- 외부로부터 데이터를 보호하기 위해
- 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서
다형성
- 여러가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
- 자손 타입의 참조 변수로 조상 타입의 객체를 가리킬 수 없다.
참조변수의 형변환
- 사용할 수 있는 맴버의 개수를 조절하는 것
- 조상 자손 관계의 참조변수는 서로 형변환 가능
instanceof 연산자
- 참조변수의 형변환 가능여부 확인에 사용. 가능하면 true 반환
- 형변환 전에 반드시 instanceof로 확인해야 함
매개변수의 다형성
참조형 매개변수는 메서드 호출 시, 자신과 같은 타입 또는 자손 타입의 인스턴스를 넘겨줄 수 있다.
추상 클래스
- 미완성 설계도, 미완성 메서드를 갖고 있는 클래스
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
추상 메서드
- 미완성 메서드. 구현부 {} 없는 메서드
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우
추상 클래스의 작성
여러 클래스에 공통적으로 사용될 수 있는 추상 클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다.
추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리
인터페이스
- 추상 메서드의 집합
- 구현된 것이 하나도 없는 설계도, 껍데기(모든 맴버가 public)
- 인터페이스의 조상은 인터페이스만 가능(Object가 최고 조상은 아님)
- 다중 상속이 가능
인터페이스의 구현
- 인터페이스에 정의된 추상 메서드를 완성하는 것
- 일부만 구현하는 경우 클래스 앞에 abstract를 붙여야 한다.
728x90
'개발 > Java' 카테고리의 다른 글
자바의 정석 - 기초편 [컬렉션프레임웍과 핵심 인터페이스 ~ HashSet(1)] (0) | 2022.07.13 |
---|---|
자바의 정석 - 기초편 [연결된예외 ~ 래퍼클래스] (0) | 2022.07.11 |
자바의 정석 - 기초편 [인터페이스와 다형성 ~ 사용자정의예외 만들기, 예외 되던지기] (0) | 2022.07.07 |
자바의 정석 - 기초편 [참조형 매개변수 ~ static import문] (0) | 2022.07.04 |
자바의 정석 - 기초편 [기본형, 객체지향 ~ 기본형 매개변수] (0) | 2022.06.30 |