수업시간 JAVA/이론
상속
SEOKIHOUSE
2023. 4. 8. 21:03
package practice0406;
class man1 {
String name;
man1(String name) {
this.name = name;
}
public void ride(transport1 trans) {
trans.ride();
}
}
class bus extends transport1{
public void ride() {
System.out.println("버스탄다");
}
}
class airplane extends transport1{
public void ride() {
System.out.println("뱅기탄다");
}
}
class transport1 {
public void ride() {
System.out.println("암거나 탈란다");
}
}
public class 다시해보기 {
public static void main(String[] args) {
man1 m1 = new man1("짱구");
bus b1 = new bus();
airplane a1 = new airplane();
transport1 t1 = new transport1();
m1.ride(b1);
m1.ride(t1);
}
}
package practice0406;
class Man {
String name;
transport t;
Man(String name) {
this.name = name;
}
void rideBus(ExpressBus eb) {
transport t = new ExpressBus();
eb = (ExpressBus) t;
eb.goToSeoul();
}
void rideKtx(Ktx kt) {
transport t = new Ktx();
kt = (Ktx) t;
kt.goToSeoul();
}
// 1.위에 두개를 요고 하나로 압축
void rideVehicle(transport trans) {
trans.goToSeoul();
}
//2.getclass써서 비교하는거 혹은 위에꺼 쓰면된다
//3.instanceof -> but같은내용출력가능성있음
// void rideVehicle(transport trans) {
// if (trans instanceof transport) {
// System.out.println("뭐든타고간다"); // if 조건문에서 trans instanceof transport 라는 조건이 항상 참이 되기
// trans.goToSeoul(); // 때문에 System.out.println("뭐든타고간다"); 가 무조건 출력되게 됩니다.
// } else if (trans instanceof Ktx) { // 그리고 transport 클래스를 상속받은 ExpressBus와 Ktx 클래스의 인스턴스를 처리할 때도
// System.out.println("ktx"); // trans instanceof Ktx 와 trans instanceof ExpressBus 라는 조건이 참이 되기 때문에,
// trans.goToSeoul(); // 각각의 if 블록에서도 System.out.println("뭐든타고간다"); 가 출력되게 됩니다.
// } else if (trans instanceof ExpressBus) {
// System.out.println("bus");
// trans.goToSeoul();
// } else {
// System.out.println("???");
// }
// }
}
class ExpressBus extends transport {
void goToSeoul() {
System.out.println("버스타고 서울감");
}
}
class Ktx extends transport {
void goToSeoul() {
System.out.println("ktx타고 서울감");
}
}
class transport {
void goToSeoul() {
System.out.println("뭐든타고간다");
}
}
public class TransportationTest {
public static void main(String[] args) {
// 사람이 버스를 타면 버스를타고 서울가요가 출력
Man m = new Man("짱구");
ExpressBus eb = new ExpressBus();
Ktx kt = new Ktx();
transport tr = new transport();
m.rideBus(eb);
m.rideKtx(kt);
System.out.println("-------------------");
// 하나로 압축
m.rideVehicle(tr);
m.rideVehicle(eb);
m.rideVehicle(kt);
}
}