상속이란 부모의 클래스를 상속받아 자식클래스로 그 부모의 모든것을 가져온다는 의미를 뜻한다. 즉, 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 것이다.
상위클래스의 멤버(이(너클래스)/필(드)/메(소드))를 하위클래스과 공유하는 것을 이 두 클래스가 서로 상속관계에 있다고 말한다.
따라서 하위클래스는 상위클래스의 확장으로 그 멤버의 개수는 하위클래스가 상위클래스와 같거나 많다.
각각의 클래스들의 중복된 멤버(이/필/메)를 하나의 클래스로 만들어 이것을 재사용하면 적은양의 코드로 클래스를 만들 수 있고 코드의 중복을 제거할 수 있다는 장점이 있다.
- 코드의 재사용으로 중복된 코드들을 제거할 수 있다.
- 다형성(하나의 객체가 여러 모양으로 표현될 수 있는것)의 표현이 가능하다.
💡 코드예제
class Person {
String name;
int age;
void learn(){
System.out.println("공부를 합니다.");
};
void walk(){
System.out.println("걷습니다.");
};
void eat(){
System.out.println("밥을 먹습니다.");
};
}
class Programmer extends Person { // Person 클래스로부터 상속. extends 키워드 사용
String companyName;
void coding(){
System.out.println("코딩을 합니다.");
};
}
class Dancer extends Person { // Person 클래스로부터 상속
String groupName;
void dancing(){
System.out.println("춤을 춥니다.");
};
}
class Singer extends Person { // Person 클래스로부터 상속
String bandName;
void singing(){
System.out.println("노래합니다.");
};
void playGuitar(){
System.out.println("기타를 칩니다.");
};
}
public class HelloJava {
public static void main(String[] args){
//Person 객체 생성
Person p = new Person();
p.name = "김코딩";
p.age = 24;
p.learn();
p.eat();
p.walk();
System.out.println(p.name);
//Programmer 객체 생성
Programmer pg = new Programmer();
pg.name = "박해커";
pg.age = 26;
pg.learn(); // Persons 클래스에서 상속받아 사용 가능
pg.coding(); // Programmer의 개별 기능
System.out.println(pg.name);
}
}
//출력값
공부를 합니다.
밥을 먹습니다.
걷습니다.
김코딩
공부를 합니다.
코딩을 합니다.
박해커