1. 상속 정의
상속은 기존 클래스를 이용해서 새로운 클래스를 작성하는 등 재사용을 의미하여 적은 양의 코드로 작성할 수 있는 장점을 가집니다.
나중에 유지보수를 하는데 있어서 효율적으로 할 수 있습니다.
// 상속을 구현하는 방법
class A extends B {
// ...
}
class B {
// ...
}
- 클래스 B는 조상 클래스
- 클래스 A는 자손 클래스
상속의 특징을 몇 가지 살펴보자면
- 상속 시 조상 클래스의 맴버만 상속이 된다.
- 자손은 조상보다 더 많은 맴버를 가진다.
- 조상은 자손에 영향을 미치지만 자손은 조상에 영향을 미치지 않는다.
public class ATest {
public static void main(String[] args) {
ScreenMP3 screenMP3 = new ScreenMP3();
screenMP3.song = 10;
screenMP3.songUp();
System.out.println(screenMP3.song);
screenMP3.displayscreen("Hello World!");
screenMP3.screen = true;
screenMP3.displayscreen("Hello World!");
}
}
class MP3 {
boolean on;
int song;
void power() {
power = !power;
}
void songUp() {
++ song;
}
void songDown() {
-- song;
}
}
class ScreenMP3 extends MP3 {
boolean screen;
void displayscreen(String text) {
if (screen)
System.out.println(text);
}
}
MP3를 상속 받은 ScreenMp3를 main에서 생성 후 조상 클래스의 맴버들을 호출하여 초기화시켜주고
메서드를 호출합니다.
결과는 아래와 같습니다.
11
Hello World!
2. 상속이 없이 재사용 방법?
즉 포함관계를 뜻합니다.
클래스의 맴버변수로 다른 클래스 타입 참조변수를 선언을 합니다.
즉 원의 정보를 나타내는 클래스 내부에 (x,y)좌표와 반지름 r이 있을 때 (x,y)좌표를 다른 클래스로 생성을 합니다.
후에 그 클래스를 원의 정보를 나타내는 클래스 내부에 선언을 하는 것이죠.
class Circle {
int x;
int y;
int r;
}
이러한 Circle 클래스를 포함관계를 이용하여 재사용을 할 경우
class Circle {
Point c = new Point();
int r;
}
class Point {
int x;
int y;
}
즉 Point라는 좌표 클래스를 생성 후 이를 Circle 클래스내 인스턴스로 생성을 합니다.
상속 없이 사용합니다.
3. 상속관계 포함관계의 쉬운 예
- 상속 관계는 흔히 사람은 동물이다.
- 포함 관계는 자동차는 바퀴를 가진다.
로 설명할 수 있습니다.
4. 다중 상속이 가능 할까?
답은 불가능입니다.
왜냐하면 다중 상속이 가능하다면 이를 상속받은 여러 클래스를 구분할 방법이 없기 때문입니다.
5. 모든 클래스의 조상이 있을까?
답은 있습니다.
바로 유명한 Object 클래스 입니다.
모든 형변환 또한 가능하며 가장 상단에 위치하여 있습니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java - 다형성 (0) | 2019.07.10 |
---|---|
Java - 제어자 (0) | 2019.07.10 |
Java- 오버라이딩 (0) | 2019.07.07 |
Java- 변수 초기화 (0) | 2019.07.07 |
Java- 생성자(Constructor) (0) | 2019.07.04 |