스마트 인재개발원/Java
2021-04-26 자바 업캐스팅 다운캐스팅
앨런튜링_
2021. 4. 26. 13:38
package ex_03;
public class Main {
public static void main(String[] args) {
//추상화 ? 여러객체에서 공통적으로 사용되는 기능들을 뽑아내는 것
Porche po = new Porche();
Volvo vol = new Volvo();
po.runner();
po.wet();
po.color = "빨강이";
System.out.println(po.getTire());
System.out.println();
vol.runner();
vol.pilot();
//추상클래스는 객체화 할 수 없다.
//상속을 통하여 무언가 기능을 꼭 구체화 하여 정의해야 할 때 추상화를 사용한다.
// Car c = new Car();
}
}
package ex_03;
public class Porche extends Car{
//일반 클래스에서 부모클래스를 물려받으면
//부모의 기능을 사용하거나 사용하지 않거나 결정을 할 수 있다.
//물려받는 추상메소드에 대하여 .
//구체적인 기능을 구현해줘야 한다.
//추상 클래스를 물려 받는 경우에는 부모로부터 지정되어 있는 메소드를 꼭 오버라이딩 해야한다.
@Override
public void runner() {
System.out.println("부드러운 코너링");
}
//포르쉐만이 갖는 기능
public void wet() {
System.out.println("도로가 젖어 있습니다. 시스템을 최적화 하겠습니다.");
}
}
package ex_03;
//추상클래서 만들기
//abstract
//추상클래스는 하나 이상의 추상 메소드를 포함하고 있어야 한다.
public abstract class Car {
//운전을 할 수 있는 기능 -> 추상 메소드 변경
//추상 메소드는 구체적인 내용을 가질 수 없다. - 몸체를 가질 수 없다. 로직이나 기능을 설정하지 않는다.
public abstract void runner();
int tire =4;
String color;
//타이어 개수를 확인하기 위한 메소드
public int getTire() {
return tire;
}
}
package ex_03;
public class Volvo extends Car {
@Override
public void runner() {
System.out.println("안전성과 크리스탈 기어봉이 있습니다.");
}
public void pilot() {
System.out.println("반자율주행 모드를 시작합니다. ");
}
}