250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 프로그래밍언어
- 스프링
- 프로그래밍기초
- 초보코딩탈출
- Elk
- 제이쉘
- 코딩초보
- 기초코딩
- 자바 스프링
- Java
- 배열
- 자바
- 프로그래밍
- Git
- 자바기초
- github
- spring
- 클래스
- JShell
- 자바프로그래밍
- eclips
- 이클립스
- 데이터베이스
- 알고리즘
- 메소드
- 스프링 기초
- 컴퓨터과학개론
- 초보코딩
- JAVA기초
- 리눅스
Archives
- Today
- Total
키보드워리어
[자바] - 다중 상속과 참조 변수에 얽힌 퀴즈 본문
728x90
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
오늘은 자바 객체시간입니다.
다중 상속과 참조 변수에 대해 알아보겠습니다.
Class Dog extends Animal,Pet{
}
자바에서 위와 같은 코드가 성립할까요?
위와 같은 다중상속은 자바에서 지원되지 않습니다.
Class Dog extends Pet{}
위 코드 의 경우 Dog is Pet의 관계가 됩니다.
하지만 Pet is Dog는 불가합니다.
자바에선
다중상속이 불가합니다. C언어에선 된다고 하네요. 이게 C언어를 어렵게 느끼는 이유 중 하나예요.
그래서
Dog dog = new Pet();
위와 같은 코드가 불가한 거죠.
Dog 클래스가 Pet 클래스를 상속받았다 하더라도,
Dog은 Pet의 하위 클래스이므로 Dog 객체는 Pet의 객체가 될 수 있지만, Pet 객체는 Dog의 객체가 될 수 없습니다.
Pet pet = new Dog();
위와 같은 코드는 가능합니다.
Dog is Pet이기도 하잖아요?
또 다른 방법들도 있어요.
Pet pet = new Dog(); // Pet 타입 변수에 Dog 객체를 대입
Dog dog = (Dog) myPet; // Pet 객체를 Dog 타입으로 형변환하여 대입
Pet pet = new Dog()의 경우 잘 생각해 보시면, Dog는 Pet 클래스를 상속하고 있으므로 Dog는 Pet의 모든 속성과 메서드를 상속받게 됩니다. 이때, pet 변수는 Dog 객체를 참조하고 있지만, pet 변수는 Pet 타입이므로 Pet 타입의 속성과 메서드에만 접근이 가능합니다. 따라서, Dog is-a Pet의 관계가 성립하게 됩니다.
Dog 클래스가 Pet 클래스를 상속하면, Dog는 Pet의 하위 클래스가 되며, Pet은 Dog의 상위 클래스가 됩니다. 따라서, Dog is-a Pet이 성립하며, Pet은 Dog is-a Pet의 성립 여부와는 무관합니다.
728x90
'JAVA > 입문' 카테고리의 다른 글
[자바] 인터페이스에 관한 이야기 (interface) (0) | 2023.03.12 |
---|---|
[자바] 추상클래스 제한과 활용 (0) | 2023.03.11 |
[자바] 객체지향 - super키워드를 이용한 부모클래스 이용 (0) | 2023.03.09 |
[자바] 객체 클래스(Object Class)는 상속의 최상위 클래스 (0) | 2023.03.06 |
[자바]객체지향 - 왜 상속을 사용해야 하는가? (Inheritance) (0) | 2023.03.05 |