상속은 부모 클래스의 멤버를 자식 클래스에 물려줄 수 있게 하는것이다.
class 자식클래스 extends 부모클래스 {
// 필드
// 생성자
// 메소드
}
객체 자신의 참조, 객체 자신을 this라고 함
public Korean(String name, String ssn) {
this.name = name;
// 필드 // 매개변수
this.ssn = ssn;
// 필드 // 매개변수
}
필드들을 생성자에서 초기화 하는 과정
생성자에서 다른 생성자를 호출할 때 this()코드를 사용
Car(String model) {
this.model = model;
this.color = "은색";
this.maxSpeed = 250; //------> 중복코드
}
Car(String model, String color) {
this.model = model;
this.color = "은색";
this.maxSpeed = 250; //------> 중복코드
}
Car(String model, String color, int maxSpeed) {
this.model = model;
this.color = "은색";
this.maxSpeed = 250; //------> 중복코드
}
public class Car {
// 필드
String company = "현대자동차";
String model;
String color;
int maxSpeed;
// 생성자
Car() { }
Car(String model) {
this(mode, "은색", 250); //
}
Car(String model, String color) {
this(mode, "은색", 250); //
}
Car(String model, String color, int maxSpeed) {
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed; // 공통 실행 코드
}
}
생성자 오버로딩이 많아질 경우, 생성자 간 중복 코드가 발생할 수 있다. 위의 코드처럼 this()코드를 이용하면 생성자 오버로딩에서 생기는 중복코드를 줄일 수 있다.
// Parent.java
public class Parent {
public String nation;
public Parent() {
this("대한민국");
System.out.println("Parent() call");
}
public Parent(String nation) {
this.nation = nation;
System.out.println("Parent(String nation) call");
}
}
// Child.java
public class Child entends Parent {
public String nation;
public Child() {
this("홍길동");
System.out.println("Child() call");
}
public Child(String name) {
this.name = name;
System.out.println("Child(String name) call");
}
}
// ChildExample.java
public class ChildExample {
public static void main(String[] args) {
Child child = new Child();
}
}
// 결과
Parent(String nation) call
Parent() call
Child(String name) call
Child() call
👀책 <혼공자>를 참고하여 작성하였습니다 :)