학교 실습/HCI

20130522 HCI

Black_HellCat 2013. 5. 22. 14:02

/*
 자손타입의 참조변수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!!!");
    }
}