상속_java
2022. 2. 25. 14:56ㆍksmart_Java/Java
728x90
상속
- 클래스 확장
- 확장한 클래스는 확장 할 대상을 상속 받아야 한다.
- 확장 된 대상은 확장 할 대상의 멤버를 가지고(포함) 있다.
- 확장 할 대상 -> 슈퍼 클래스
- 확장 된 대상 -> 서브 클래스
- extends 키워드로 상속이 가능하다.
package kr.or.ksmart;
class Car { // 추상적인 클래스 (슈퍼클래스)
// 슈퍼클래스, 서브클래스 각자 캡슐화
// 접근지정자-서브클래스 접근 불가능
private double gas;
public Car() {
System.out.println("슈퍼클래스 Car");
}
public double getGas() {
return gas;
}
public void setGas(double gas) {
this.gas = gas;
}
}
// extends 키워드로 추상적인 클래스를 상속받는다.
class RacingCar extends Car { // 확장시킬 클래스 (서브클래스)
public RacingCar() {
System.out.println("서브클래스 RacingCar");
}
public void move() {
System.out.println("RacingCar - go");
}
}
class Bus extends Car {
private int num;
public Bus() {
System.out.println("서브클래스 Bus");
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public class JavaBasic04 {
public static void main(String[] args) {
/**
* 상속 - 클래스 확장 - 확장한 클래스는 확장 할 대상을 상속 받아야 한다. - 확장 된 대상은 확장 할 대상의 멤버를 가지고(포함)
* 있다. - 확장 할 대상 -> 슈퍼 클래스 - 확장 된 대상 -> 서브 클래스
*/
RacingCar rc = new RacingCar();
rc.setGas(0.1);
System.out.println(rc.getGas());
rc.move();
Bus bus = new Bus();
bus.setGas(1.1);
System.out.println(bus.getGas());
bus.setNum(25);
System.out.println(bus.getNum());
/**
* Bus bus = new Bus(); 객체화시 Car, Bus 객체를 둘 다 가지고 있습니다. 서브클래스 객체화 시 슈퍼 클래스도 객체화가
* 되었음으로 참조타입을 슈퍼클래스로 쓰일 수 있다.
*/
/* 서브클래스는 슈퍼클래스로 대처 될 수 있다. */
System.out.println("*******************");
/********************************
* 참조타입에 의한 멤버만 접근(호출) 가능하다.
*****************************/
Car rc2 = new RacingCar(); // Car, RacingCar
rc2.setGas(1.1);
/**
* 다운캐스팅, 업캐스팅 - 상속관계 - 객체화 된 대상에 슈퍼 클래스와 서브 클래스 모두 객체화가 이루어져 있을 경우
*/
// 다운케스팅 - 큰 객체에서 작은 객체로 변환
RacingCar rc3 = (RacingCar) rc2;
rc3.move();
// 업케스팅 - 작은 객체에서 큰 객체로 변환
// 서브 클래스에서 슈퍼 클래스 타입으로 변환
Car rc4 = rc3;
System.out.println(rc4.getGas() + "<-rc4.getGas()");
/**슈퍼클래스가 객체화 될 경우
추상클래스, 인터페이스로 만든다.(뉴 연산자 못쓰게 하려고!)
Car c1 = new Car(); //객체화 시 car만 되어있고 RacingCar 없음 캐스팅 불가
RacingCar c2=(RacingCar) c1;
*/
Car bus2 = new Bus();
}
}
728x90
'ksmart_Java > Java' 카테고리의 다른 글
로또번호만들기_java (0) | 2022.04.30 |
---|---|
객체지향 4대원칙_java (0) | 2022.02.25 |
객체지향 설계 5대 원칙 - SOLID (0) | 2022.02.25 |
클래스 선언, 접근지정자, 객체 생성_java (0) | 2022.02.17 |
주석처리_java (0) | 2022.02.17 |