클래스 상속부분 공부중인데
class Mammal
class Dog : mammal
있다치고
Mammal mammal1 = new mammal();
이면 Mammal의 인스턴스가 만들어지는것인데
Mammal mammal2 = new Dog();
이런거 나오니까 복잡해짐
mammal2는 Mammal의 인스턴스라고 봐야되? 아니면 Dog의 인스턴스라고 봐야됨?? <= 이것에 대해 책에 아무 설명이 없음
만약 이렇게 되면 mammal2는 Mammal클래스에 있는 private 데이터나 메소드를 사용가능함??
아니라면 왜 굳이 Dog dog = new Dog()을 안 쓰고 복잡한 Mammal mammal2 = new Dog(); 를쓰는거야;;
이점이라도 있어?
new Dog()니까 당연히 new Dog의 인스턴스지. 그리고 상속이 공유되는건 protected 고. private은 온전히 자기거임. 저렇게 쓰는 이유는, 배열화 되었을때 유리함. 상속된 클래스랑 베이스 클래스랑 같은 배열에 들어갈 일이 꽤 있음. 아니면 또다른 상속 클래스끼리 묶어야할 수도 있고. 그걸 따로 구분 안하고 하나의 배열에 묶을때 좋은거지.
mammal이 있고, 이걸 상속한 dog, cat 클래스를 만들었을때, 이걸 뭉뚱그려 한묶음의 배열로 만들때 이걸 다 따로 만들지 않고 하나의 배열로 만들어야한다면, mammal 배열을 만들어서 거기에 같이 할당하는거.