본문 바로가기
프로그래밍/Java

Java - 상속 (1)

by 왕거 2020. 7. 5.

객체지향의 4요소 중 하나인 상속에 대한 강의를 들었다.

 

상속의 정의는 "연관된 일련의 클래스들에 대해서 공통적인 규약을 정의하는 것" 이다.

 

상속을 하고자 할 때는 extends 키워드를 사용하여 진행한다.

class man {
    String name;

    public void tellMyName() {
        System.out.println("My name is" + name);
    }
}

class workman extends man {
    String job;
    String address;

    public void introduceMyself() {
        System.out.println("My name is" + name);
        System.out.println("My job is" + job);
        System.out.println("My E-main address is" + address);
    }
}

man 클래스를 상속한 workman 클래스에서 name 변수를 선언하지 않아도 접근이 가능함

 

변수뿐만 아니라 man 클래스의 메소드인 tellMyName()도 workman 클래스에서 사용 가능하다.

- 단 Private으로 접근 레벨이 지정되면 불가능함.

 

상속의 대상 클래스 - 상속을 한 클래스를 지칭하는 명칭

  • 상위클래스 - 하위클래스
  • 부모클래스 - 자식클래스

상속의 개념과는 연관이 없지만 좋은 코드를 위한 원칙으로서 각 클래스의 변수들은 스스로의 생성자를 통해서 초기화 되는 것이 바람직하다.

- 하위 클래스의 생성자를 통해서 상위 클래스의 변수를 초기화하는 경우, 해당 원칙에 위배됨

  • super 키워드
    • 상위 클래스의 생성자를 호출하는 키워드
class man {
    String name;

    public man(String name) {
        this.name = name;
    }

    public void tellMyName() {...}
}

class workman extends man {
    String job;
    String address;

    public workman() {
        super("none");
        this.job = "none";
        this.address = "none";
    }

    public workman(String name, String job, String address) {
        super(name);
        this.job = job;
        this.address = address;
    }

    public void introduceMyself() {...}
}

 

상속에 대해서 주의할 점

  • 자바는 단일 상속만 지원한다.
  • 하나의 클래스는 하나의 클래스에 대해서만 상속 가능하다.
  • Static 변수, 메소드의 경우 상속 안된다.