IS -A 로 표현된다.final 키워드를 지정하면 상속이 불하능하 클래스가 된다. final 키워드를 지정하면 오버라이딩이 불가능하다. public class 자식클래스 extends 부모클래스 {...}
Ojbect클래스는 Java 내 모든 클래스들의 최상위 부모 클래스이다.
- Object clone() : 해당 객체의 복제본을 생성하여 반환함.
- boolean equals(Object object) : 해당 객체와 전달받은 객체가 같은지 여부를 반환함.
- Class getClass() : 해당 객체의 클래스 타입을 반환함.
- int hashCode() : 자바에서 객체를 식별하는 정수값인 해시 코드를 반환함.
- String toString() : 해당 객체의 정보를 문자열
로 반환함. & Object 클래스에서는 클래스이름 @해쉬코드값 리턴함.
부모 클래스로부터 상속받은 메서드의 내용을 자식 클래스가 재정의 하는 것을 오버라이딩이라고 한다.
오버라이딩을 하기위해서는 아래 조건들을 만족한다.
1. 예외는 부모 클래스의 메서드보다 많이 선언할 수 없다.
2. 접근 제어자를 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
@Override // 오버라이딩한 함수 Annotaion 으로 표현
public void horn() {
booster();
}
super 는 부모 클래스의 멤버를 참조가능한 키워드이다.
주로 자식 클래스 내부에서 선언한 멤버와 상속받은 멤버의 이름이 같을 경우 구분하기 위해 사용된다.
public void setCarInfo(String model, String color, double price) {
super.model = model; // model은 부모 필드에 set
super.color = color; // color는 부모 필드에 set
this.price = price; // price는 자식 필드에 set
}
super(...) 는 부모 클래스의 생성자를 호출하는 키워드이다.
super();// 자식 클래스 SportsCar 생성자
public SportsCar(String model, String color, double price, String engine) {
// this.engine = engine; // 오류 발생
super(model, color, price); // 부모 생성자 호출
this.engine = engine;
}
다형성(polymorphism) 이란 여러 가지 형태를 가질 수 있는 능력을 의미한다. 클래스, 참조변수의 타입변환을 활용해서 다형성을 구현 한다.
부모타입 변수 = 자식타입객체;자식타입 변수 = (자식타입) 부모타입객체;=> 강제 타입변환은 자동 타입변환을 거친 자식타입객체가 다시 돌아가려고 할때만 가능하며, 부모타입 변수로는 자식타입객체의 고유 멤버를 사용할 수 없기 때문이다.
Tire tire = new HankookTire("HANKOOK");
Tire tire = new KiaTire("KIA");
========================================
public Car(Tire tire) {
this.tire = tire;
}
...
Car car1 = new Car(new KiaTire("KIA"));
Car car2 = new Car(new HankookTire("HANKOOK"));
Tire getHankookTire() {
return new HankookTire("HANKOOK");
}
Tire getKiaTire() {
return new KiaTire("KIA");
}
...
// Tire : 부모, KiaTire : 자식
Tire hankookTire = car1.getHankookTire();
KiaTire kiaTire = (KiaTire) car2.getKiaTire();
다형성의 기능으로 인해 해당 클래스 객체의 원래 클래스명을 체크하는 명령어 이다.
{대상 객체} instance of {클래스 이름} 와 같은 형태로 사용하면 응답값은 boolean 입니다.
이번시간에는 클래스의 상속에 대해 알아갈 수 있었다. 자식과 부모 클래스의 자유로운 변환과 쓰임에 대해 많은 연습이 필요할 듯하다. 다음 시간에는 인터페이스에 다룬다.