학습목표

  • 상위 클래스-하위 클래스의 상속 관계의 핵심을 이해하고, 그 장점을 설명할 수 있다.
  • extends 키워드를 사용하여 두 개 이상의 클래스 간 상속 관계를 정의할 수 있다.
  • 포함관계와 상속관계의 차이를 설명할 수 있다.
  • 상속 관계에서 사용할 수 있는 메서드 오버라이딩의 정의, 성립 조건, 장점을 이해하고 이를 활용할 수 있다.
  • super 와 super() 의 차이를 설명할 수 있다.
  • Object 클래스가 자바 클래스의 상속계층도에서 최상단에 위치한다는 사실을 이해할 수 있다.

상속 (코드를 재활용하여 확장시키는 것)

상속이란 부모의 클래스를 상속받아 자식클래스로 그 부모의 모든것을 가져온다는 의미를 뜻한다. 즉, 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 것이다.

상위클래스의 멤버((너클래스)/(드)/(소드))를 하위클래스과 공유하는 것을 이 두 클래스가 서로 상속관계에 있다고 말한다.

따라서 하위클래스는 상위클래스의 확장으로 그 멤버의 개수는 하위클래스가 상위클래스와 같거나 많다.


상속을 사용하는 이유? (코드중복제거/ 다형성의 표현)

각각의 클래스들의 중복된 멤버(이/필/메)를 하나의 클래스로 만들어 이것을 재사용하면 적은양의 코드로 클래스를 만들 수 있고 코드의 중복을 제거할 수 있다는 장점이 있다.

  • 코드의 재사용으로 중복된 코드들을 제거할 수 있다.
  • 다형성(하나의 객체가 여러 모양으로 표현될 수 있는것)의 표현이 가능하다.

상속받는 방법? (extends)

💡 코드예제

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);

    }
}

//출력값
공부를 합니다.
밥을 먹습니다.
걷습니다.
김코딩
공부를 합니다.
코딩을 합니다.
박해커
profile
기억을 위한 기록 :>

0개의 댓글