JAVA 상속
상속
- 부모클래스가 가지고 있는 자원(필드+메서드)을 자식클래스에서 가져다 쓸 수 있는 기술
- 상속관계에 대한 표현은 자식클래스에 표현함
- 부모클래스 입장에서 자식클래스에 대한 정보 없음
- 상속을 표현할 때 사용하는 키워드 'extends'
ㄴclass 클래스명 extends 부모클래스명{ }
ㄴpublic class Dog extends Animal{ }
- 자바는 단일상속만 지원함 = 부모클래스를 둘 사용할수 없음
- 부모클래스가 가지고 있는 생성자는 상속받지 아니함
- super(); 은 부모클래스의 디폴트 생성자 호출을 의미함
ㄴ super("hello", 34); 는 부모클래스의 사용자 생성자 중 (String, int)형태의 생성자가 있을 때 사용 가능
부모클래스 | 자식클래스 |
super클래스 | sub클래스 |
parent클래스 | child클래스 |
기본클래스 | 유도클래스 |
Object클래스
- 자바의 최상위 부모클래스
접근제한자(접근 제한 지시자)
+: public : 프로젝트 어디에서든 인식이 됨
#: protected: 같은 패키지 내에서만 인식이 됨. 단, 상속관계가 성립하면 다른 패키지에서도 인식이 됨
~: 디폴트: 같은 패키지에서만 인식이 됨
-: private: 해당 클래스에서만 인식이 됨
import는 다른 패키지의 내용을 불러오기 위해 사용하며,
컴파일러는 기본적으로 하나의 내용에 대해 같은 패키지 내에서만 검색함. 특정 패키지의 클래스를 추가검색시키기 위해서 import를 사용함.
메서드 오버라이딩
상속관계가 성립하는 클래스 관계에서 자식클래스가 부모클래스가 가지고 있는 메서드의 내용을 변경하는 것
c1, d1등 주소값이 나오는 경우 toString()메서드의 오버라이딩을 통해 해결
name, age, ssn 등 여러가지 값 중 하나가 같을때 true값을 뽑아내고 싶을때는
hashcode()와 equals()의 오버라이딩을 통해 해결