231219 JAVA Inheritance(상속 + 접근제어자 protected)

2023. 12. 20. 09:122023.11.21-2024.05.31

 package com.sukgi.inheritance;

 //상속 + 접근제어자 protected

 

 import dec19.Test03;

 

 //1 코드량 줄이기

 //2 클래스간 관계를 만들어서 활용하기 = 다형성

 

 class Animal extends Test03 {

 protected String name;

 private int age;

 

 public void sleep() {

 testNumber = 10;

 System.out.println(testNumber + "animal이 잠을 잡니다");

 }

 }

 

 class Cat extends Animal {

 protected int catNumber;

 

 public void change() {

 testNumber = 10;

 }

 

 @Override

 public void sleep() {

 // super.sleep();

 System.out.println("고양이가 잔다");

 }

 

 }

 

 class Dog extends Animal {

 @Override

 public void sleep() {

 // super.sleep();

 System.out.println(name + "이(가) 집에서 잠을 잡니다.");

 }

 

 public void walk() {

 System.out.println("산책갈까?");

 }

 }

 

 public class Inheritance extends Test03 {

 public static void main(String[] args) {

 Cat cat = new Cat();

 Dog dog = new Dog();

 // Animal animal = new Animal();//추상화 ->인터페이스 나중에 배울거라 주석

 cat.sleep();

 cat.name = "3PO";

 

 Inheritance inheritance = new Inheritance();

 System.out.println(inheritance.testNumber);

 

 // System.out.println(cat.testNumber);

 

 cat.sleep();

 dog.sleep();

 

 Animal a = dog;

 a.sleep();

 

 Animal b = new Dog();

 b.sleep();

 //b는 Animal

 //b.walk();//자식에게 있는것이 부모에게 전달 안된다!

 ((Dog)b).walk();//자식에게 있는것이 부모에게 전달 안된다!

 dog.walk();

 

 Object obj = b;

 ((Dog)((Animal)obj)).walk();

 

 Dog newDog = (Dog)obj;

  newDog.walk();

 

 }

 }

 

 고양이가 잔다

 0

 고양이가 잔다

 null이(가) 집에서 잠을 잡니다.

 null이(가) 집에서 잠을 잡니다.

 null이(가) 집에서 잠을 잡니다.

 산책갈까?

 산책갈까?

 산책갈까?

 산책갈까?