diff --git a/JavaOOP/src/Java20.java b/JavaOOP/src/Java20.java new file mode 100644 index 00000000..fec55465 --- /dev/null +++ b/JavaOOP/src/Java20.java @@ -0,0 +1,23 @@ +import myObject.Animal; +import myObject.Cat; +import myObject.Dog; + +public class Java20 { + public static void main(String[] args) { + + // upcasting + Animal cat = new Cat(); + Animal dog = new Dog(); + + // 오버라이딩 한 메소드 사용 + // cat 에만 있는 메소드는 사용 하지못함 -> cat.say() X + cat.eat(); // 컴파일 시점 -> Animal 의 eat(), 실행 시점 -> Cat 의 eat() + dog.eat(); // 컴파일 시점 -> Animal 의 eat(), 실행 시점 -> Dog 의 eat() + + + // downcasting + // Cat c = (Cat) ani; + // c.night(); + ((Cat) cat).say(); // . 연산자가 casting 연산자 보다 우선순위가 높다. + } +} diff --git a/JavaOOP/src/myObject/Cat.java b/JavaOOP/src/myObject/Cat.java index b5b8f329..c63154fd 100644 --- a/JavaOOP/src/myObject/Cat.java +++ b/JavaOOP/src/myObject/Cat.java @@ -5,4 +5,8 @@ public class Cat extends Animal{ public void eat() { System.out.println("고양이가 먹는다"); } + + public void say() { + System.out.println("냐옹옹"); + } }