상속 Inheritance : extends
- 기존의 클래스로 새로운 클래스를 작성하는 것(재사용)
- 자손은 조상의 모든 멤버를 상속받는다 (생성자, 초기화블럭 제외)
- 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다)
포함 composites
- 클래스의 멤버로 참조변수를 선언하는 것
- 작은 단위의 클래스를 만들고 이들을 조합해서 클래스를 만든다
1
2
3
4
class Car {
Engine e = new Engine();
Door[] d = new Door[4];
}
main class에서 engine이나 door를 쓰려면
1
2
3
Car c = new Car();
c.e.x = 1; //engine 클래스에 있는 x라는 변수를 가리킨 것
c.d.y = 2; //door 클래스에 있는 y라는 변수를 가리킨 것
위와 같이 레이어가 한 개 더 바로
단일 상속
- 자바는 단일 상속만 허용한다 = 부모는 하나만 있어야 한다
- 따라서 비중이 높은 클래스 하나만 상속 관계로 하고, 나머지는 포함관계로 한다.
Object 클래스 : 모든 클래스의 조상
- 부모가 없는 클래스는 자동적으로 object클래스를 상속받게 된다.
- 모든 클래스는 object클래ㅐ스에 정의된 11개의 메소드를 상속받는다.
오버라이딩
- 상속받은 조상 메소드를 자신에 맞게 변경하는 것
- 선언부는 조상 클래스의 메소드와 일치해야 한다.
- 접근 제어자를 조상 클래스의 메소드보다 좁은 범위로 변경할 수 없다.(public, protected, private)
- 예외선언문은 조상 클래스의 메소드보다 많이 선언할 수 없다.
참조변수 super
- 객체 자신을 가리키는 참조변수
- 인스턴스 메소드(생성자)내에서만 존재. static 메소드 내에서는 사용 불가
- 조상의 멤버와 자신의 멤버를 구별할 때 사용
- 조상의 멤버에 super.변수를 쓰고, 자신의 멤버에 this.변수를 쓴다.
- 만약 this.변수가 없는 경우, super.변수가 this.변수에도 들어가서 둘 다 같은 값이 된다.
super() 조상의 생성자
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
- 생성자의 첫줄에는 반드시 생성자를 호출해야 한다
- 첫줄에 생성자 호출 안하면 컴파일러가 자동으로 추가한다.
제어자 modifier
- 클래스와 클래스의 멤버에 부가적인 의미 부여
- 하나의 대상에 여러 제어자를 같이 사용 가능 (접근제어자는 하나만)
static
- 클래스의 , 공통적인
- 객체 없이 사용 가능