1. 상속
1) 상속의 장점
- 상속을 통해 기존클래스의 필드와 메소드를 재사용가능
- 기존 클래스의 일부 변경도 가능
- 상속을 이용하게 되면 복잡한 GUI프로그램을 쉽게 작성
- 상속은 이미 작성된 검증된 소프트웨어를 재사용
- 코드의 중복을 줄일 수 있다.
- 기존의 클래스를 확장하여 새로운 클래스를 작성하는것(코드 재사용)
- 두 클래스를 부모와 자식으로 관계를 맺어주는 것( extends 키워드 사용)
- 자식은 부모의 모든 멤버(변수, 메소드)를 상속받는다. (private는 제외)
- 한개의 클래스만 상속받을 수 있음(다중상속 금지)
2) is-a 관계
- 상속관계가 있는 클래스들은 "자식클래스 is a 부모클래스"의 관계로 정의될 수 있음.
3) has a 관계(포함관계)
: 한 클래스의 멤버로 다른 클래스를 선언해서 부품처럼 조립하여 사용하는 것.
4) Object 클래스
: 자바의 최상위 클래스
: 모든 클래스는 자동적으로 Object 클래스를 상속받게 된다.
: 모든 클래스는 Object 클래스에 정의된 11개의 method를 상속받는다.
2. 오버라이딩
1) 오버라이딩의 정의
- 부모클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 적절하게 변경하는 것(재정의)
- 메소드의 헤더(매개변수 갯수와 타입모두)는 동일하게 작성하고 내용만 변경시킴
3. super와 super()
1) super.
this - 현재 객체의 시작주소를 가리키는 변수
this. - 현재 클래스의 변수, 메소드 호출
super - 부모클래스의 멤버를 가리킴
super. - 부모클래스의 메소드,변수 호출에 사용
2) super()
: 부모클래스의 생성자를 호출할 경우 사용됨
: 자식클래스의 객체를 생성하면 자식의 멤버와 무보의 멤버가 합쳐진 하나의 객체가 생성되며 아래와 같은 순서로 진행됨.
1. 부모클래스의 객체생성
2. 부모클래스의 생성자 호출
3. 자식클래스의 객체생성
4. 자식클래스의 생성자 호출
: 부모클래스의 생성자와 private는 상속이 안됨
따라서 부모클래스의 멤버들도 초기화 되어야하기 때문에 자식클래스의 생성자 첫문장에서 부모클래스의 생성자를 호출해야 함 => super()
- Scholar 클래스가 Student 클래스를 상속받아,
매개변수가 포함된 생성자를 생성, 부모의 전역변수 초기화는 super(~)를 통해 초기화.
'개인공부 > JAVA' 카테고리의 다른 글
11. 추상화 (0) | 2022.05.09 |
---|---|
10. static, final, 다형성 (0) | 2022.05.06 |
8. 생성자(Constructor) (0) | 2022.05.03 |
7. 클래스와 객체 (0) | 2022.05.03 |
6. 메소드 (0) | 2022.04.29 |