기존의 클래스로 새로운 클래스를 작성하는 것
(코드의 재사용
)
두 클래스를 부모와 자식으로 관계를 맺어주는 것
class 자식 클래스 extends 부모클래스 {
//...
}
클래스의 멤버로 참조변수를 선언하는 것
java는 단일 상속만을 허용
class TvDVD extends Tv, DVD { //에러
//...
}
부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
toString(), equals(Object obj), hashCode(), ....
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
선언부가 조상 클래스의 메서드와 일치해야 한다.
접근 제어자가를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩 - 기존에 없는 새로운 메서드를 정의하는것(new)
오버라이딩 - 상속받은 메서드의 내용을 변경하는것(change)
객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자)내에서만 존재
조상의 멤버를 자신의 멤버와 구별할 때 사용
자신의 멤버만 초기화 해야 함.
조상의 생성자는 호출.
클래스를 사용할 때 패키지 이름을 생략할 수 있다.
컴파일러에게 클래스가 속한 패키지를 알려준다.
ex) import로 java.util을 생략할 수 있게 해 준다.
static멤버를 사용할 때 클래스 이름을 생략할 수 있게 해 준다.
클래스와 클래스의 멤버에 부가적인 의미 부여
접근 제어자 public, protected, (default), private
그 외 static, final, abstract...
추상클래스의 인스턴스 생성불가.
private 같은 클래스 내에서만 접근 가능
(default) 같은 패키지 내에서만 접근 가능
protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능
public 접근 제한이 전혀 없음
조상 타입 참조 변수로 자손 타입 객체를 다루는 것
기존(타입 일치)
Tv = t = new Tv();
SmartTv s = new SmartTv();
다형성(타입 불일치)
Tv t = new SmartTv();
Tv가 조상 SmartTv가 자손일 경우
1. Tv t = new SmartTv(); - 사용 가능
2. SmartTv s = new Tv(); - 사용 불가(없는것 호출할 수 있기 때문)