20130522 HCI
/*
자손타입의 참조변수fr로 조상타입의 인스턴스 뉴카를 참조하려고 했기 때문에 에러가 남
*/
package castingtest2;
/**
*
* @author User
*/
class CastingTest2 {
public static void main(String args[]) {
Car car = new FireEngine();
//Car car = new Car();에서 위와 같이 바뀜, 맨처음 만들때 워터 들어가도록 파이어엔진을 만들면 됨, car객체 아닌 파이어 객체 만들어
//fr=(FireEngine)car는 변환 시 문제 발생하지 않음
Car car2 = null;
FireEngine fe = null;
car.drive();
if (car instanceof FireEngine) {
fe = (FireEngine) car; // 8번째 줄. 실행 시 에러가 발생한다.
fe.drive();
car2 = fe;
car2.drive();
}
}
}
class Car {
String color;
int door;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
}
class FireEngine extends Car { // 소방차
void water() { // 물을 뿌리는 기능
System.out.println("water!!!");
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package captiontvtest;
/**
*
* @author User
*/
class Tv {
boolean power; // 전원상태(on/off)
int channel; // 채널
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
class CaptionTv extends Tv {// tv를 상속받음
boolean caption; // 캡션상태(on/off)
void displayCaption(String text) {
if (caption) { // 캡션 상태가 on(true)일 때만 text를 보여 준다.
System.out.println(text);
}
}
}
class CaptionTvTest {
public static void main(String args[]) {
CaptionTv ctv = new CaptionTv();
ctv.channel = 10; // 캡션에선 없지만 tv조상 클래스로부터 상속받은 멤버
ctv.channelUp(); // 조상 클래스로부터 상속받은 멤버
System.out.println(ctv.channel);
ctv.displayCaption("Hello, World");
ctv.caption = true; // 캡션기능을 켠다.
ctv.displayCaption("Hello, World"); // 캡션을 화면에 보여 준다.
Tv t = new CaptionTv();
t.channel = 10;
t.channelUp();
System.out.println(t.channel);
//t.displayCaption("Hello, World"); //can not find symbol
//t.caption = true;
//t.displayCaption("Hello, World");
//CaptionTv ctv1 = new Tv();
}
}
////////////////////////////////////////////////////////////////////////////////////////////
/*
자손타입의 참조변수fr로 조상타입의 인스턴스 뉴카를 참조하려고 했기 때문에 에러가 남
*/
package castingtest2;
/**
*
* @author User
*/
class CastingTest2 {
public static void main(String args[]) {
Car car = new FireEngine(); // 아빠 참조변수로 자녀를 참조, 파이어엔진 만들었찌만 카 객체가 있고, 화이트하고 4가 나오게 됨
System.out.println("Color : "+car.color+".Door : " + car.door);
//Car car = new Car();에서 위와 같이 바뀜, 맨처음 만들때 워터 들어가도록 파이어엔진을 만들면 됨, car객체 아닌 파이어 객체 만들어
//fr=(FireEngine)car는 변환 시 문제 발생하지 않음
car.water();
Car car2 = null;
FireEngine fe = null;
car.drive();
if (car instanceof FireEngine) {
fe = (FireEngine) car; // 8번째 줄. 실행 시 에러가 발생한다.
// 자녀의 참조변수를 참고하였기 때문에
System.out.println("Color : "+fe.color+".Door : " + fe.door);
// 오버라이딩 된 녀석이 튀어나옴
fe.water();
//fe.drive();
//car2 = fe;
//car2.drive();
}
}
}
class Car {
String color="White";
int door=4;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
void water()
{
System.out.println("Car Water!!!");
}
}
class FireEngine extends Car { // 소방차
String color="Red";
int door=8;
void water() { // 물을 뿌리는 기능
System.out.println("Car Water!!!");
}
}