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 라는 단어를 쓸 것이다.