ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - Casting 명시적변환
    Java 2018. 1. 18. 14:26
    반응형
    public class Spell {

        public String casting() {
            return "주문을 외운다";
        }
        
    }

    public class Fire extends Spell {

        @Override
        public String casting() {
            return "화염"+super.casting();
        }

    }

    public class Ice extends Spell {

        @Override
        public String casting() {
            return "냉기"+super.casting();
        }

    }

    public class Light extends Spell {

        @Override
        public String casting() {
            return "번개"+super.casting();
        }

    }


    < Main >

    public class Mage {

        public static void main(String[] args) {
            
            
            // 1. 다형성을 사용하지 않고
    //      Fire f = new Fire();
    //      System.out.println(f.casting());
    //      
    //      Ice i = new Ice();
    //      System.out.println(i.casting());
    //      
    //      Light l =new Light();
    //      System.out.println(l.casting());
            
            // 2. 다형성을 사용 하고
            Spell sp = null;
            sp = new Fire();
            System.out.println(sp.casting());
            sp = new Ice();
            System.out.println(sp.casting());
            sp = new Light();
            System.out.println(sp.casting());


    // 3. 다형성 배열
    Spell[] sp = new Spell[3];
    sp[0] = new Fire();
    System.out.println(sp[0].casting());
    sp[1] = new Ice();
    System.out.println(sp[1].casting());
    sp[2] = new Light();
    System.out.println(sp[2].casting());


    // 4. 다형성 배열 for문
    Spell[] sp = new Spell[3];
    sp[0] = new Fire();
    sp[1] = new Ice();
    sp[2] = new Light();

    for(int i = 0; i <sp.length; i++) {
        System.out.println(sp[i].casting());
    }

    for(Spell s : sp) {
        System.out.println(s.casting());
    }
            
        }

    }

    // 다형성을 사용하면 필요할때만 불러 온다.
    // 다형성 Casting 예제 -

    Mage.java

    Casting.java

    Spell.java

    Light.java

    Fire.java

    Ice.java

    Mamal.java

    Cat.java

    Dog.java







    < Car ex) >


    public class Racer extends Car{

        public void drive(Car car) { // Car형식으로 받아서 일일히 메서드를 만들 필요가 없다.
            car.run();
        }

    // 만약 필드 다형성을 사용하지 않는다면, 메서드 오버로드를 사용 해야 한다.
    public void drive(Maserati ma) {}
    public void drive(Ferrari fe) {} public void drive(Kia k) {}


    }

    public class Car {

        public void run() {
            System.out.println("Car 시동");
        }
        
    }

    public class Maserati extends Car{

        public void run() {
            
            System.out.println("Maserati 시동");
            
        }

    }

    public class Ferrari extends Car{

        public void run() {
            
            System.out.println("Ferrari 시동");
            
        }

    }

    public class Kia extends Car{

        public void run() {
            
            System.out.println("Kia 시동");
            
        }

    }



    public class Main {

        public static void main(String[] args) {
            
            
            // 레이서를 부른다.
            // 차를 가져온다.
            // 차를 레이서에게 운전 시킨다.
            Racer rc = new Racer();
            Car c = new Racer();
            c.run();
            
            c = new Maserati();
            c.run();
            c = new Ferrari();
            c.run();
            c = new Kia();
            c.run();
            
            // Car형식 c를 넘긴다.
            rc.drive(c);
    rc.drive(new Maserati());
    rc.drive(new Ferrari()); // 곧바로 집어 넣는다.
            
        }

    }


    < Car ex) >




    반응형

    'Java' 카테고리의 다른 글

    Java - Interface  (0) 2018.01.19
    Java - 추상화 (Abstraction)  (0) 2018.01.19
    Java - Promotion, Casting 묵시적, 명시적 형변환  (0) 2018.01.18
    Java - 다형성(Polymarphism)  (0) 2018.01.18
    Java - extends  (0) 2018.01.18

    댓글

Designed by Tistory.