JAVA
상속
고민말고생각하는사람
2024. 1. 28. 14:24
상속이란?
기존 코드를 계승, 확장하여 재사용하는 기술이다.
대충 글로 끄적여도 이해는 잘 안 된다. 써보자.
public class SuperAnimal {
int legCount;
public void move() {
System.out.println("움직입니다.");
}
public void eat() {
System.out.println("먹습니다.");
}
}
상속 사용법 = 클래스 파일에서 class 명 뒤에 extends 키워드와 함께 상속 받을 super class 명을 적으면 된다.
public class SubBird extends SuperAnimal{
public void fly() {
System.out.println("새는 하늘을 날지.");
}
}
public class AnimalMain {
public static void main(String[] args) {
SubBird bird = new SubBird();
bird.eat();
bird.move();
bird.fly();
bird.legCount = 10;
System.out.println("bird.legCount = " + bird.legCount);
}
}
Bird 클래스에는 fly() 는 있지만, eat(), move(), int legCount 는 없다.
하지만 보시는 바와 같이!
새가 먹고, 움직이고, 날기도 하며 10개의 다리도 가질 수 있게 됐다.
하나 더. 치타는 달릴줄 만 한다. 하지만 치타는 동물이다. 움직이며, 먹기도 한다.
움직이고 먹을 수도 있도록 SuperAnimal 을 상속해주자.
public class SubCheetah extends SuperAnimal{
public void run() {
System.out.println("달린다! 빠르다! 빠르게 달린다");
}
}
SubCheetah cheetah = new SubCheetah();
cheetah.eat();
cheetah.move();
cheetah.run();
cheetah.legCount = 50;
System.out.println("cheetah,legCount = " + cheetah.legCount);
짜잔. 이렇게 치타고 먹고, 움직이고, 달리고, 50개의 다리도 가질 수 있게 됐다.
이렇듯, 상속 기능을 활용하면 sub(상속 받는 쪽. 하위)에서 super(상속 해주는 쪽. 상위)의 코드를 재사용할 수 있게 된다.
부모, 자식 이라는 단어로도 설명되곤 하는데,
어폐가 있어 나는 이 단어들을 싫어한다.
class 조부{}
class 손주 extends 조부{}
조부는 손주의 부모인가? = X
조부 class 는 손주 class 의 부모 class 인가 ? = O
헷갈린다. 나는 앞으로 부모, 자식 이라는 단어 보다 super, sub 라는 단어를 쓸 것이다.