class Shape {
public Shape() {
System.out.println("도형입니다.");
}
public void draw() {
System.out.println("도형을 그립니다.");
}
}
class Rectangle extends Shape {
public Rectangle() {
System.out.println("사각형 생성자");
}
@Override
public void draw() {
System.out.println("사각형 도형을 그립니다.");
}
public void draw2() {
System.out.println("사각형도형 그리기2");
}
}
public class SuperTest {
public static void main(String[] args) {
Shape shape = new Shape();
shape.draw();
Rectangle rec = new Rectangle();
rec.draw();
Shape shape2 = new Rectangle();
shape2.draw();
shape2.draw2(); //오류발생!!
}
}
자식클래스의 객체가 부모클래스의 타입으로 형 변환이 되는 것
class TV {
String name;
int price;
public void printTV() {
System.out.println("TV가 보여요");
}
}
class ColorTv extends TV{
int color;
@Override
public void printTV() {
System.out.println("Color TV가 보여요");
}
}
public class TvTest {
public static void main(String[] args) {
TV tv = new ColorTV(); // upcatsing
ColorTV tv = new TV(); // 컴파일 오류
}
}
업캐스팅 된 객체를 다시 부모클래스 타입의 객체로 형 변환하는 것
class TV {
String name;
int price;
}
class ColorTV extends TV{
int color;
}
public class TvTest {
public static void main(String[] args) {
TV tv = new ColorTV(); // upcatsing
ColorTV colorTV = (ColorTV) tv; // downcasting
}
}