본문 바로가기

JavaCode(review)

polymophism 기본

반응형
package com.company;

            //polymorphism 예시 : Big class + 자잘한 class들 +main 하나에 생성
                              //예)영화1개 - 영화제목들 3개...
//Big class(base class)
class Movie {
    private String name;            //field

    public Movie(String name){      //constructor - access+className (access+initialization)
        this.name =name;
    }
    public String plot(){           // instance method
        return "No plot here";
    }

    public String getName() {       //getter
        return name;
    }
}

// 자잘한 class 3개
//class 1
class Jaws extends Movie{           //inheritance from Movie(base class)
    public Jaws() {                         //constructor
        super("Jaws");
    }

    @Override                               // method override
    public String plot() {
        return "A shark eats lots of people";
    }
}
class IndependenceDay extends Movie{     //class 2

    public IndependenceDay() {        //constructor
        super("IndependenceDay");
    }
    @Override                               // method override
    public String plot() {
        return "Aliens attempt to take over planet earth";
    }
}

class MazeRunner extends Movie{             //class 3
    public MazeRunner() {                //constructor
        super("MazeRunner");
    }
    @Override                               // method override
    public String plot() {
        return "Maze Runner";
    }
}
// 출력 code
public class Main {                             //movie.plot이 polymophism
    public static void main(String[] args) {
        for(int i=1; i<11; i++){
            Movie movie = randomMovie();        //object movie설정/
            System.out.println("Movie#"+ i + ":"+ movie.getName()+"\n"+    //"\n"은 next line
                                "Plot: "+movie.plot() +"\n");
        }
    }
    public static Movie randomMovie(){         //random Method
        int randomNumber = (int)(Math.random()*3)+1;     //range: 1~3
        System.out.println("Random Number generated was:" + randomNumber );
        switch(randomNumber){
            case 1:                                  //object 설정: class object=new class
                return new Jaws();
            case 2:
                return new IndependenceDay();
            case 3:
            return new MazeRunner();

         //   default:
             //   return null;
        }
        return null;            //default: 쓸때보다 뭐 polymorphism 더 잘 보여준다하니.
    }

}

 

output

D:\IT\JDK\jdk11.0.6_10\bin\java.exe "-javaagent:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\lib\idea_rt.jar=63041:D:\IT\IDEA\IntelliJ IDEA Community Edition 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\IT\NewProject\polymorphism\out\production\polymorphism com.company.Main
Random Number generated was:1
Movie#1:Jaws
Plot: A shark eats lots of people

Random Number generated was:2
Movie#2:IndependenceDay
Plot: Aliens attempt to take over planet earth

Random Number generated was:1
Movie#3:Jaws
Plot: A shark eats lots of people

Random Number generated was:3
Movie#4:MazeRunner
Plot: Maze Runner

Random Number generated was:3
Movie#5:MazeRunner
Plot: Maze Runner

Random Number generated was:2
Movie#6:IndependenceDay
Plot: Aliens attempt to take over planet earth

Random Number generated was:3
Movie#7:MazeRunner
Plot: Maze Runner

Random Number generated was:3
Movie#8:MazeRunner
Plot: Maze Runner

Random Number generated was:3
Movie#9:MazeRunner
Plot: Maze Runner

Random Number generated was:3
Movie#10:MazeRunner
Plot: Maze Runner


Process finished with exit code 0