🌱 오늘의 주제 : super( ), super
🌱 super( ) - 조상의 생성자
- Object클래스를 제외한 모든 클래스의 생성자 첫 줄에 생성자, this() 또는 super()를 호출해야 한다. 그렇지 않으면 컴파일러가 자동적으로 super()를 생성자의 첫 줄에 삽입한다.
- 생성자의 첫 줄에 반드시 다른 생성자를 호출해야한다.
- 생성자는 상속되지 않는다.
package inheritance;
public class Ex7_4 {
public static void main(String[] args) {
// super() - 조상의 생성자
Point3D p = new Point3D(1,2,3);
System.out.println("x= " + p.x + ",y = " + p.y + ",z = " + p.z);
}
}
class Point {
int x, y;
Point(int x, int y) {
this.x =x;
this.y = y;
}
}
class Point3D extends Point {
int z;
Point3D(int x, int y, int z) {
super(x,y); // 조상 클래스의 생성자인 Point(int x , int y)를 호출
this.z =z;
}
}
🌱 super
- super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다.
- 조상 클래스로부터 상속받은 멤버도 자손 클래스 자신의 멤버이므로 super대신 this를 사용할 수 있다.
🌱 오버라이딩(overriding)
- 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다.
<오버라이딩의 조건>
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
- 이름이 같아야 한다.
- 매개변수가 같아야 한다.
- 반호나타입이 같아야 한다.
<조상 클래스의 메서드를 자손 클래스에서 오버라이딩할 때>
1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
3. 인스턴스메서드를 static 메서드로 또는 그 반대로 변경할 수 없다.
🌱 오버로딩 vs 오버라이딩
오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것. (new)
오버라이딩 : 상속받은 메서드의 내용을 변경하는 것. (change, modify)
'Java' 카테고리의 다른 글
Java - 참조변수의 형변환 (0) | 2023.01.28 |
---|---|
Java - 다형성(polymorphism) (0) | 2023.01.28 |
Java - 클래스 간의 관계 - 포함관계 (0) | 2023.01.25 |
Java - 생성자에서 다른 생성자 호출하기 - this ( ) (0) | 2023.01.24 |
Java - 생성자 (0) | 2023.01.24 |