본문 바로가기

자바 프로그래밍

[JAVA] 상속

 

A → B → C → D

      B' → C'

      B'' → C''

 

변경을 하더라도 A, D 클래스가 에러가 없도록 만들고 싶다. (상속, 다형성)

 

 

상속을 표현할 때,     EMPLOYEE (상위클래스, 수퍼클래스, 부모클래스)

 

                                 ↑

 

                            MANAGER (하위클래스, 서브클래스, 자식클래스)

 

 

자바에서는 ONLY 단일 상속만 지원한다.

 

하나의 서브 클래스가 가질 수 있는 상위 클래스는 오로지 하나이다.

 

더 필요한 것이 있다면 인터페이스로 보완하는 방식으로 자바는 지원하고 있다.

 

(다중상속을 하게 되면 다른 클래스에서 같은 메소드를 하나의 클래스에서 사용할 수 있기 때문)

 

 

 

하위 클래스는 상위 클래스의 private 접근 제한자는 접근이 불가능.

 

default, public, protected 만 접근이 가능하다.

 

 

일반적으로 this 키워드로 접근이 모두 가능하지만, 같은 이름의 변수나 메소드가 존재할 경우!!!!

 

구분하기 위해 super() 키워드를 사용한다.

 

자바에서 모든 클래스들은 Object라는 클래스를 상속 받고 있다.

 

toString() 메소드가 Object 클래스가 가지고 있는 메소드!

 

 

super() 를 생략하는 이유 ? 내 생성자 오버로딩을 할 때,

this 같은 경우 가장 위에 선언되어야 하는데 

super()를 쓰는 경우 this가 에러가 발생. 그러므로 super()는 생략이 가능하다록 만들어뒀음

 

 

 

 

 

 

같은 패키지 내부에서 자식 클래스는 protected, default, public 만 this로 호출이 가능
다른 패키지에서는 자식 클래스는 protected, public만 가능

 

같은 패키지 내부에서 private은 에러 나머지는 no error!

 

다른 패키지 사이에서는 default와 private 에러! 그리고 나머지는 no error!

 

 

 

** 다른 패키지에서 다른 클래스에서의 호출 (객체 선언)

다른 패키지에서 인스턴스 객체를 선언하여 사용할 때는 public 접근제한자만 직접 접근이 가능하다.
같은 패키지 내부에서 인스턴스 객체를 선언하여 사용할 때는 private만 불가능

 

'자바 프로그래밍' 카테고리의 다른 글

[JAVA] 객체의 형변환  (0) 2019.05.21
[JAVA] 추상클래스 (abstract)  (0) 2019.05.20
[JAVA] static 키워드  (0) 2019.05.20
[JAVA] 접근제한자  (0) 2019.05.17
[JAVA] StringBuffer() , StringBuilder()  (0) 2019.05.17