# 상속 // 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

+ Recent posts