Java 상속(Inheritance)
by 볼빵빵오춘기상속(Inheritance)
더보기
class 자식클래스 extends 부모클래스{
//....
}
class Parent{}
class Child extends Parent{
//....
}
⇒ Child 와 Parent 클래스는 상속관계이다.
⇒ 부모와 자식관계를 그림으로 그리면 아래 그림과 같다.
- 기존의 클래스로 새로운 클래스를 작성하는 것 (⇒ 코드의 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것
- 자손의 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)
- 위에서 ‘부모’가 아닌 ‘조상’이라고 표현한 이유는 부모의 부모까지 모두 상속받기때문이다.
- 자손의 멤버 개수는 조상보다 적을 수 없다.( ⇒ 같거나 많다.)
더보기
class Parent{
int age; // <= 멤버
}
class Child extends Parent{}
⇒ 클래스 Parent에서는 멤버가 1개가 있다.
⇒ 클래스 Child 내부에 아무것도 작성되어있지않기 때문에 멤버가 없다 생각이 든다.
⇒ 하지만 Child는 Parent를 상속받았기 때문에 멤버를 1개를 상속받는다.
⇒ 따라서 Child에도 멤버가 1개가 있는것이다.
(즉 자신의 멤버의 갯수는 0개, 상속받은 멤버 1개 ⇒ 토탈 멤버 1개)
- 자손의 변경은 조상에 영향을 미치지 않는다.
더보기
class Parent{
int age; // <= 멤버
}
class Child extends Parent{
void play(){
System.out.println("놀자~");
}
}
⇒ Child 클래스에 play()라는 메서드를 추가함. Child이 변경되었지만 Parent에 영향을 주지않는다.
⇒ Child 클래스의 멤버는 2개가 된다.
(즉 자신의 멤버의 갯수는 1개, 상속받은 멤버 1개 ⇒ 토탈 멤버 2개)
⇒ 상속을 하면 자식클래스가 확장이 된다. 그래서 extend 키워드를 쓰는것
예제 코드1
더보기
// 코드1 - 2차원 좌표를 나타내기위한 클래스
class Point {
int x;
int y;
}
// 코드2 - 3차원 좌표를 나타내기 위한 클래스1
class Point3D{
int x;
int y;
int z;
}
// 코드3 - 3차원 좌표를 나타내기 위한 클래스2
class Point3D extends Point{
int z;
}
변수 x,y,z를 갖는 객체를 만든다고 하면
→ ‘코드2’을 보면 Point 클래스와 관계없이 클래스를 새로 만들 수 있고
→ ‘코드3’처럼 Point 클래스를 상속받아서 만들 수 도 있다.
여기서 Point 클래스의 변경을 한다하면
⇒ ‘코드2’는 Point클래스의 영향을 받지 않지만
⇒ ‘코드3’은 변경의 영향을 받는다.
예제 코드2
더보기
public class Hello {
public static void main(String[] args) {
SmartTv stv = new SmartTv();
stv.channel = 10;
stv.channelUp();
System.out.println(stv.channel);
stv.displayCaption("Hello World1");
System.out.println("------");
stv.caption = true;
stv.displayCaption("Hello World2");
}
}
class Tv{
boolean power;
int channel;
void power() { power = !power;}
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
class SmartTv extends Tv{
boolean caption; // 자막
void displayCaption(String text) {
if(caption) {
System.out.println(text);
}
}
}
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 단일상속(Single Inheritance), Object 클래스 (0) | 2023.11.29 |
---|---|
Java 클래스 간의 관계, 상속과 포함관계 (0) | 2023.11.29 |
Java 변수의 초기화, 멤버변수의 초기화 (0) | 2023.11.29 |
Java 생성자 this(), 참조변수 this (0) | 2023.11.29 |
Java 기본 생성자, 매개변수가 있는 생성자 (1) | 2023.11.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기