2023. 2. 21. 19:29ㆍ자바/이론 공부
이 게시글은 내가 "이것이 자바다" 책을 읽고 노트에 정리해놨던 내용들을 검색하기 쉽게 데이터로 백업하는 용도의 글이다.
문제가 된다면 삭제하겠음.
7장 상속
*부모 클래스 = 상위 클래스
자식 클래스 = 하위 클래스 = 파생클래스
*상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만듦 => 코드의 중복을 줄여줌.
*부모클래스의 private 접근제한의 필드와 메서드는 상속대상에서 제외
*상속 이용시 부모 클래스만 수정해도 모든 자식 클래스들이 수정되니 유지보수시간이 최소화.
*extends로 상속함.
다중 상속은 허용 x
*자식객체 생성시 부모객체 따로 생성안했어도 먼저 생성됨. (자식생성자에서 부모생성자를 부름)
*부모클래스의 메소드가 자식클래스가 사용하기에 적합하지않다면 자식클래스에서 메소드를 수정하면 됨 => 오버라이딩
*final 클래스 : 최종 클래스.
상속불가
*final 메소드 : 최종 메소드
오버라이딩 불가
*다형성 : 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질
- 하나의 타입에 여러 객체 대입
- 다형성을 이용하여 객체를 부품화 할 수 있음
- 클래스 타입변환은 상속관계에 있는 클래스 사이에서 발생
- 자식 타입은 부모타입으로 자동 타입변환
*
//이 둘이 참조하는 것은 같은 cat임.
Cat cat=new Cat();
Animal animal= cat;//Animal을 참조하는게 아님.
*부모타입으로 자동타입변환 후 부모클래스에 선언된 필드와 메소드만 접근가능
- 변수는 자식객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로 한정
- 만약, 메소드가 자식 클래스에서 오버라이딩되었다면 자식클래스의 메소드가 대신 호출
*다형성 : 동일한 타입을 사용하지만 다양한 결과가 나오는 성질
- 주로 필드의 값을 다양화함으로써 실행 결과가 다르게 나오도록 구현
- 실행 도중, 어떤 객체를 필드로 저장하느냐에 따라 실행결과가 달라짐 => 필드의 다형성
*필드의 다형성
- 상속, 오버라이딩 후 다형성을 주게되면 코드를 고칠게 없어짐. but 결과는 달라짐. 굳이 메소드를 수정할 필요가 없음. 객체만 바꾸면 되는거임. (오버라이드한 메서드만 바꿔 사용가능. 필드는 원래꺼)
*매개변수의 다형성
- 매개값으로 어떤 자식객체가 제공되느냐에 따라 메소드의 실행 결과는 다양해짐.
*강제타입변환
- 부모타입은 자식타입으로 변환
- 자식타입에 선언된 필드와 메소드를 꼭 사용해야 할 때 강제타입변환을 해서 다시 자식타입으로 변환한 다음 자식타입의 필드와 메소드를 사용하면 된다.
*추상클래스 abstract
- 실체클래스(객체를 직접 생성하는)의 공통 필드와 메소드들을 추출해서 선언한 클래스. (추출해서 모아놓은 것이라 객체는 직접 생성 x.)
- 추상클래스가 부모, 실체 클래스가 자식
*추상클래스의 용도
1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
- 실체 클래스 설계자가 여러명일 경우를 위해
2. 실체 클래스를 작성할 때 시간절약
*추상메소드
- 추상클래스 설계시, 하위클래스가 반드시 실행내용을 채우도록 강요하고 싶은 메소드가 있을 경우, 해당 메소드를 추상메소드로 선언하면 된다.
- 자식클래스는 반드시 추상메소드를 오버라이딩해야함.
- 메소드 이름은 통일, 내용은 다르게 하고싶을 때.
'자바 > 이론 공부' 카테고리의 다른 글
[JAVA / Spring] Maven에 대하여 (0) | 2023.02.22 |
---|---|
"이것이 자바다" 정리 8장 인터페이스 (0) | 2023.02.22 |
"이것이 자바다" 정리6-2 (0) | 2023.02.18 |
"이것이 자바다" 정리6-1 (0) | 2023.02.17 |
"이것이 자바다" 정리5-2 (0) | 2023.02.16 |