본문 바로가기

Java

상속 (inheritance)

상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것.

 (= 부모 클래스의 자원을 자식 클래스에서 자신의 것처럼 사용하는 기술) 

 OOP언어의 중요한 3가지 특징(상속, 다형성, 캡슐화) 중 하나.

 코드재사용성을 높임.

 

 조상클래스(super class) - 부모클래스를 포함한 상속관계의 모든 상위 클래스.

                                  모든 자식클래스가 가지는 공통특징을 구현.

 자손클래스(sub class) - 하위클래스

                                부모가 제공하는 공통기능을 사용하고(코드의 재사용성) + 자신만의 특별한 기능 구현

 

 

상속특징 >>

1. 자손클래스는 항상 조상클래스보다 같거나 많은 멤버를 갖는다. (확장)

   상속 키워드 : extends 

2. 생성자와 초기화블록은 상속되지 않는다. 멤버만 상속.

3. 자손클래스를 생성하면 먼 조상클래스부터 차례로 생성 후 자손클래스 생성.

4. 단일  상속만 지원(부모 클래스가 명확하지만 기능확장 어려움) 

5. java.lang.Object 클래스는 자바 모든 클래스의 조상클래스이다.

 

 

단일상속 >>

하나의 부모만 상속.

C++에서는 가능했던 다중상속이 자바에서는 비허용됨.

자바에서는 인터페이스를 이용하여 다중상속기능 구현.

다중상속은 서로 다른 클래스 2개로부터 상속받았는데 두 클래스 모두 power()라는 메서드를 가지고 있으면 헷갈린다는 문제점이 있음. (서로 다른 클래스로부터 상속받은 멤버간의 이름이 같은 경우 구별할 수 있는 방법이 없다는 단점)

비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계(has a)로.

 

 

Object클래스 >>

모든 클래스의 조상.

부모가 없는 클래스는 Compiler가 자동으로 'extends Object'를 추가. Object 클래스를 상속받게 된다.

11개의 메서드.

=> 자바의 모든 클래스는 Object클래스에 정의된 모든 멤버(11개 메서드 포함)를 사용할 수 있다.

 

 

Object클래스의 toString()메서드>>

[클래스이름@객체주소값] 반환

=>정확히는 객체주소값 아님. 

System.out.println(); 메개변수로 참조변수오면 참조변수.toString()이 아닌,

참조변수만 써도 println()기능으로 toString()이 자동으로 호출됨. 

 

 

 

 

 

'Java' 카테고리의 다른 글

&&와 ||, &와 | //구동 차이와 활용  (0) 2022.02.09
오버라이딩  (0) 2022.01.19
java.lang.Math 주요 method  (0) 2022.01.19
형변환(Casting)  (0) 2021.12.28
자바 문서 주석  (0) 2021.12.28