객체지향 언어의 특징(A.P.I.E)
- 추상화 : 현실의 객체를 추상화해서 클래스를 구성한다.
- 다형성 : 하나의 객체를 여러 가지 타입(형)으로 참조할 수 있다.
- 상속 : 부모 클래스의 자산을 물려받아 자식을 정의함으로 코드의 재사용이 가능하다.
- 데이터 은닉과 보호 : 데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다.
상속(Inheritance)
- 기존 클래스의 자산(멤버)을 자식 클래스에서 재사용하기 위함.
- 부모의 생성자와 초기화 블록을 상속하지 않는다.
- 기존 클래스의 멤버를 물려받기 때문에 코드의 절감
- 부모의 코드를 변경하면 모든 자식들에게도 적용 -> 유지 보수성 향상..!
Object 클래스
hashCode(), equals(), toString() : 대부분 클래스에서 재정의(오버라이딩)해서 사용
단일 상속
- 다중 상속의 경우 여러 클래스의 기능을 물려받을 수 있으나 관계가 매우 복잡해짐
- 자바는 단일 상속만 지원
- 대신 interface와 포함 관계로 단점을 극복 가능
포함 관계
- 상속 이외에 클래스를 재활용 하는 방법
- 2개 이상의 클래스에서 특성을 가져올 때 하나는 상속, 나머지는 멤버 변수로 가져온다.
메서드 오버라이딩
toString 메서드
- 객체를 문자열로 변경하는 메서드
- 궁금한 것은 주소값이 아닌 내용이기 때문에 오버라이딩해서 많이 쓴다.
equals 메서드
- 두 객체가 같은지 비교하는 메서드
- 등가비교 연산자 ==로 두 객체의 주소값 비교
- 두 객체의 내용을 비교할 수 있도록 equals 메서드 재정의
- 객체의 주소 비교 : == 활용
- 객체의 내용 비교 : equals 재정의
Super 키워드
- this를 통해 멤버에 접근했듯이 super를 통해 조상 클래스 멤버에 접근 가능
- super.를 이용해 조상의 메서드 호출로 조상의 코드 재사용