728x90
더보기
Day13-1. 230516
상속(inheritance)
부모클래스 = 상위클래스 = supper클래스
자식클래스 = 하위클래스 = 파생클래스 = sub클래스
→ 이미 잘 개발된 클래스를 재사용하기 때문에 중복되는 코드 줄여줌.
→ 유지 보수 편리성 제공, 객체 다형성 구현 가능
- 상속 대상 : 부모의 필드와 메소드
클래스 상속
class 자식클래스 extends 부모클래스{
//필드
//생성자
//메소드
}
- 상속 대상 제한
1. 여러 개의 부모 클래스를 상속할 수 없다.
2. 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외.
부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외.
부모클래스 Machine01>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package chap0607;
import java.util.Date;
public class Machine01{
//field
String brand; //브랜드
String color; //색상
Date productionDay; //생산일 null로 초기화
boolean power; //전원
//constructor
//method
//전원키다
void powerOn() {
System.out.println("전원이 켜졌습니다.");
power = true; //!power
//power = !power; 는 power를 반대로 바꿔줌.
//return !power; 셋중에 하나->void를 boolean으로 바꿔줌.
}
//전원끄다
void powerOff() {
System.out.println("전원이 꺼졌습니다.");
power = false;
}
}
|
cs |
자식클래스 1 Car05>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package chap0607;
public class Car05 extends Machine01{
//Machine01클래스로부터 field, method를 상속받았다.
//filed
int currentSpeed=0; //현재스피드
static int maxSpeed=300; //최대스피드=300
//method
//속도높이다
void speedUP(int speed){
currentSpeed += speed;
}
//속도낮추다
void speedDown(int speed){
currentSpeed -= speed;
}
}
|
cs |
부모 클래스의 필드와 메소드를 상속받고 다른 필드와 메소드를 추가함.
Car05Main 클래스>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package chap0607;
public class Car05Main {
public static void main(String[] args) {
Car05 myCar = new Car05();
myCar.color = "red";
System.out.println(myCar.brand);
System.out.println(myCar.color);
System.out.println(myCar.productionDay);
System.out.println(myCar.power); //위에까지 상속받은 것
System.out.println(myCar.currentSpeed);
System.out.println(myCar.maxSpeed); //추가한 것
myCar.powerOn();
myCar.speedUP(50);
System.out.println(myCar.currentSpeed);
myCar.powerOff();
}
}
|
cs |
더보기
* 실행 결과
null
red
null
false
0
300
전원이 켜졌습니다.
50
전원이 꺼졌습니다.
자식클래스 2 Tv01>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package chap0607;
public class Tv01 extends Machine01 {
//필드
int vol; //볼륨
String resolution="HD"; //해상도
//메소드
//볼륨높이다()
void volUp(int vol) {
this.vol += vol;
showVol();
}
//볼륨낮추다()
void volDown(int vol) {
this.vol -= vol;
showVol();
}
//볼륨 출력
void showVol(){
System.out.println("현재볼륨:"+vol);
}
}
|
cs |
Tv01Main클래스>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package chap0607;
public class Tv01Main {
public static void main(String[] args) {
Tv01 myTv = new Tv01();
System.out.println(myTv.brand);
System.out.println(myTv.color);
System.out.println(myTv.productionDay);
System.out.println(myTv.power);
System.out.println(myTv.resolution);
myTv.powerOn();
myTv.vol=10;
System.out.println(myTv.vol);
myTv.volUp(5);
myTv.volDown(3);
myTv.powerOff();
}
}
|
cs |
더보기
* 실행 결과
null
null
null
false
HD
전원이 켜졌습니다.
10
현재볼륨:15
현재볼륨:12
전원이 꺼졌습니다.
728x90
'개발 수업 > JAVA' 카테고리의 다른 글
[Java] 클래스/접근제한자 (0) | 2023.05.16 |
---|---|
[Java] final,상수(static final) (0) | 2023.05.16 |
[Java] 패키지(import문),java.util 패키지(Date 클래스,Calendar 클래스) (0) | 2023.05.15 |
[Java] 클래스/인스턴스 멤버와 정적 멤버 (0) | 2023.05.15 |
[Java] 클래스/메소드(메소드 오버로딩(overloading)) (0) | 2023.05.12 |