상속
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
상속을 받은 자손 클래스는 조상 클래스의 모든 멤버를 상속 받는다
조상 클래스가 변경되면 자손 클래스는 영향을 받지만, 자손 클래스에 새로운 코드가 추가되어도 조상 클래스는 아무런 영향을 받지 않는다
- 생성자와 초기화 블럭은 상속되지 않는다. (멤버만 상속)
- 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다.
- 자손 클래스의 인스턴스를 생성하면 조상 클래스의 멤버와 자손 클래스의 멤버가 합쳐진 하나의 인스턴스로 생성된다.
단일상속
자바에서는 오직 단일 상속만 허용한다.
Object 클래스
모든 클래스 상속계층도의 최상위에 있는 조상 클래스.
다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object 클래스로부터 상속받게함
* toString()이나 equals()와 같은 메서드를 따로 정의하지 않고 사용할수 있었던 것은 이 메서드들이 Object클래스에 정의된 것들이기 때문
super()
자손 클래스에서 조상 클래스로투버 상속받은 멤버를 참조하는데 사용되는 참조변수
class superTest{
public static void main(String[] args){
Child c = new Child();
c.method();
}
}
class Parent{
int x = 10;
}
class Child extends Parent{
int x = 20;
void method(){
System.out.println(x); // 20
System.out.println(this.x); // 20
System.out.println(super.x); // 10
}
}
오버라이딩
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
* 메서드의 내용만을 새로 작성하는 것이므로, 메서드의 선언부는 조상의 것과 완전히 일치해야 한다.
- 이름이 같아야 한다.
- 매개변수가 같아야 한다
- 반환 타입이 같아야한다
오버로딩 vs 오버라이딩
오버로딩: 기존에 없는 새로운 메서드를 정의하는 것
오버라이딩: 상속받은 메서드의 내용을 변경하는 것
class Parent{
void parentMethod(){}
}
class Chile extends Parent{
void parentMethod() {} // 오버라이딩
void parentMethod(int i) {} //오버로딩
}
'Language > Java' 카테고리의 다른 글
4.6 객체 지향 프로그래밍 (다형성) (0) | 2021.07.09 |
---|---|
4.5 객체 지향 프로그래밍 (제어자) (0) | 2021.07.09 |
4.3 객체 지향 프로그래밍 (오버로딩, 생성자) (0) | 2021.07.08 |
4.2 객체 지향 프로그래밍 (변수와 메서드) (0) | 2021.07.07 |
4.1 객체 지향 프로그래밍 (클래스와 객체) (0) | 2021.07.06 |