728x90
반응형
상속
- 부모가 가진 모든 것을 자식에게 물려주는 것
- 자식은 자신만의 멤버를 추가하는 것
부모 레벨로 갈수록 일반화 (추상화)
자식 레벨로 갈수록 구체화
재사용성을 높인다..
Object
모든 객체(상속)의 근원은 Object 이다
Object는 Root 객체로써 자바에 존재한다
-> 모든 객체는 Object를 부모로 가지고 있음
- 필드가 없고 메소드로만 이루어져 있는 Class
: toString, equals() 등의 메소드를 가지고 있다 - 주소 값을 가진 참조 변수(레퍼런스 변수)의 뒤에는 toString()이 생략되어 있다
추상화
- 클래스 간 공통적 성질 추출
- 공통된 성질을 일반적인 성질로 가지는 모듈 생성 (is a 관계 확인)
- 1,2 번 모두 만족하면 상속
- 상속 받은 자식들은 자신만의 멤버만 작성하면 된다
부모 클래스 (Parent Class, Super Class)
자식 클래스 (Child Class, Sub Class)
자식 클래스 extends 부모 클래스{}
자식과 부모의 생성자
부모 클래스에 생성자 정의가 되어있지 않으면 에러!
-> 자식이 생성될 때 부모 생성이 먼저 진행되기 때문
자식 Class의 생성 순서
- stack에 자식 참조 변수
- heap에 Object 객체 생성
- heap의 Object 객체에 부모 객체 추가(묵시적 초기화 일어남)
- heap 부모 객체에 자식 멤버 변수 추가됨 (부모와 자식 관계가 메모리에서 실제로 하나의 객체)
-> 상속을 받는다는 표현이지만 자식 변수가 부모 객체를 참조하는 것
super()
부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수
super() 클래스는 따로 입력하지 않아도 기본적으로 생성 됨
-> 때문에 부모 클래스에 생성자가 없으면 에러가 난다
-> super(인자1, 인자2, 인자3);과 같이 입력해주지 않으면 부모의 멤버 변수를 사용하지 못하고
묵시적 초기화 값을 반환 받게 된다
Method Overriding
상속 관계에서 메소드를 재정의 하는 것
- 부모의 메소드를 그대로 물려받는다.
- 자식의 상태에 맞게 수정하여 사용
Method Overring 규칙
- 메소드 선언부는 모두 일치해야 함 (이름, 인자 값, 리턴 타입)
- 메소드 구현부는 달라야 함 (기능이 달라짐)
- 상속관계의 클래스에서 발생
자식 클래스
필드 -> 부모의 필드를 물려받고 자신만의 필드를 추가
메소드 -> 부모의 메소드를 자식에 맞게 수정하여 사용
자식 생성시 부모의 기본 생성자가 없으면 에러가 난다..!
부모의 값을 받으려면
- 자식 생성자에 부모 Class의 필드를 명시적으로 주입
- super() 내부에 받은 필드의 인자를 입력
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java) 10/28 - static (0) | 2021.10.28 |
---|---|
Java) 10/26 - 다형성 (Polymorphism) (0) | 2021.10.26 |
Java) 10/26 - Access Modifier (접근 지정자) (0) | 2021.10.26 |
Java) 10/26 - Method Overloading, 생성자 Overloading (0) | 2021.10.26 |
Java) 10/25 -실행 클래스와 모듈 (0) | 2021.10.25 |
댓글