From a4d8c3a2bccf4b73b9ed1de3b2842ade636b4b84 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 10 Mar 2021 14:30:36 +0900 Subject: [PATCH] java oop : object casting --- JavaOOP/src/Java20.java | 23 +++++++++++++++++++++++ JavaOOP/src/myObject/Cat.java | 4 ++++ 2 files changed, 27 insertions(+) create mode 100644 JavaOOP/src/Java20.java 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("냐옹옹"); + } }