개발/JAVA
상속(Inheritance)
코린이딱콩
2022. 8. 29. 23:45
✔️상속은 연관 있는 클래스들에 대해 공통적인 구성요소를 정의하고, 이를 대표하는 클래스를 정의하는 것을 의미합니다.
✔️상속 관계는 "is a" 관계를 의미하며 extends 키워드를 이용해 상속 관계를 정의합니다.
✔️상속 관계에서 상속을 받는 클래스를 sub class, derived class, child class, extended class 라 합니다.
✔️상속 관계에서 상속을 제공하는 클래스를 super class, base class, parent class 라 합니다.
public class Manager extends Employee {
//필드 및 메소드
}
✔️자식클래스는 부모 클래스를 상속받아 부모 클래스의 모든 자원(속성, 메서드)을 사용할 수 있습니다.
✔️자식 클래스는 부모클래스에 없는 필드와 메서드를 정의하여 기능을 추가할 수 있습니다.
또한, 상위클래스에 정의된 메서드를 재정의하여 다르게 동작시킬 수 있습니다.(오버 라이딩)
public class Employee {
private String name;
private double salary;
public Employee(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getName() {
return name;
}
}
public class Manager extends Employee { //Employee 상속
private double bonus;
public Manager(String name) {
super(name);
}
public void setBonus(double bous) {
this.bonus = bonus;
}
public double getSalary() { //오버라이딩
return super.getSalary() + bonus;
}
}
✔️상속 대상이 되는 부모 클래스에 protected 접근 제한자로 정의된 구성요소는 자식 클래스 구성요소가 됩니다.
✔️자식 클래스는 부모 클래스의 protected, public 구성요소에 대해 this 접근이 가능합니다.
즉 상속관계에서 자식 클래스는 부모 클래스에서 제공하는 구성요소들을 자신의 구성요소로 포함합니다.
✔️부모 클래스의 private 구성요소는 자식 클래스에서 직접 접근할 수 없습니다.
# : protected로 정의 , - : private으로 정의 , + : public으로 정의
public class Shape {
protected int x;
protected inty;
protected Color color;
public void draw() {
System.out.println("Drawing Shape");
}
}
public class Rectangle extends Shape {
private int width;
private int height;
public void resize(int width, int height) {
this.width = width;
this.height = height;
}
public void move(int x, int y) {
this.x = x;
this.y = y;
}
}
🧐Reference