# 상속 // extends 키워드
* 부모의 것을 모두 사용할 수 있음 // ex) 클래스 시민, 클래스 서울 extends 시민, 클래스 대전 extends 시민
* 상속보다는 참조를 해서 포함관계를 사용하는 경우가 더 많다. 이것을 판별하는 방법은?
- ~은~이다(IS-A) : 상속관계/ ~은~을 가지고있다(HAS-A) : 포함관계 ex) 근로자는 주소이다 x / 근로자는 주소를 가지고 있다.o
* 메서드 오버라이딩 (재정의)
- 조건 3가지 :
1. 메서드의 선언부가 상위클래스의 그것과 완전히 일치해야함
2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.
3. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.
- 상위클래스 타입으로 선언하면 배열로 선언하여 관리할 수 있는 편리성이 있음
// 배열로 한번에 관리하기
Vehicle[] vehicles = new Vehicle[] { new Bike(), new Car(), new MotorBike()};
for (Vehicle vehicle : vehicles) {
vehicle.run();
}
// 출력값
Bike is running
Car is running
MotorBike is running
* Super 키워드
- 상위 클래스의 객체 // super.변수 / this.변수로 구분
- Super()는 상위클래스의 생성자를 호출
- spuer()는 생성자 안에서만 사용가능하고 반드시 첫줄에 와야함 // 모든 생성자의 첫줄에는 반드시 this() 혹은 super()가 선언되어야함
* 모든객체의 최고 조상 Object클래스 // 컴파일시 아무런 상속을 받지 않는 클래스에 extends Object를 추가함
- 대표적 메서드 : toString(), equals(), hashCode(), wait(), notify()
# 캡슐화 : 정보은닉에 중점
* import문 : 다른 패키지의 클래스를 사용하기 위해 사용
- 사용법 : import 패키지명.클래스명; 또는 import 패키지명.*; / package practicepack.test2; <-- import문 없이 사용
* 접근제어자의 접근 제한 범위
- private : 동일클래스에서만 접근 가능
- default : 동일 패키지 내에서만 접근 가능
- protected : 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능
- public : 접근 제한 없음
* getter 와 setter
- private으로 변수 생성하고 public getter/setter 메서드를 통해 데이터 변경 읽어오기
'Study > Java' 카테고리의 다른 글
애너테이션 / 스트림 (0) | 2022.11.15 |
---|---|
컬렉션 (0) | 2022.11.10 |
제네릭 / 예외처리 (0) | 2022.11.10 |
다형성 / 추상화 (0) | 2022.11.08 |
필드 / 메서드 (0) | 2022.11.03 |