[자바 기초] 상속
복습
https://shins99.tistory.com/25
[자바 기초] 배열
복습 https://shins99.tistory.com/23 [자바 기초] static 복습 https://shins99.tistory.com/21 [자바 기초] C R U D 의 개념 복습 https://shins99.tistory.com/20 [자바 기초] this 키워드 복습 https://shins99.tistory.com/18 [자바 기초]
shins99.tistory.com
상속
💡 학습 목표
1. 상속에 대핸 개념을 이해 하자.
2. 상속 extends 키워를 사용해서 문법을 완성해 보자.
1. 상속에 대핸 개념을 이해 하자.
기능적으로 더 큰 클래스는 자식 클래스 입니다.
상속을 구현하는 경우
● 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐
● 하위 클래스는 상위 클래스 보다 더 구체적인 개념과 기능을 가짐
용어 정리
● 상속하는 클래스 : 상위 클래스, parent class, super class
● 상속받는 클래스 : 하위 클래스, child class, subclass
클래스 상속(Ingeritance)
- 자식 클래스가 부모 클래스의 멤버변수, 메서드를 물려 받음
- 새로운 클래스를 정의할 때, 이미 구현된 다른 클래스를 상속받아서 속성,기능을 확장시켜 클래스를 구현
→ 상속을 하는 부모 클래스보다 상속을 받는 자식 클래스의 데이터가 더 크고 구체적임
(== 부모 클래스는 자식 클래스보다 더 일반적)
class 자식클래스 extends 부모클래스 {
코드;
}
.- 상속받는 클래스끼리 멤버변수/메서드가 동일하면, 자식 클래스 파일에서는 코드를 제거하고 부모 클래스에만 입력해도 상속받아서 사용 가능
- 자식 클래스 객체로 어떤 메서드를 실행하면, 우선 자식 클래스 자신에게 그 메서드가 있는지 확인한다.
→ 자신에게 그 메서드가 없다면 부모 클래스에 있는 메서드 확인해서 사용
→ 메서드 오버라이드 = 부모 클래스의 메서드를 자식 클래스가 재정의
package ch01;
public class A {
String name;
int height;
int weight;
int age;
// main 함수 테스트 - 잠시 자리만 빌림
public static void main(String[] args) {
C c1 = new C();
c1.age = 10;
System.out.println(c1.age);
} // end of main
} // end of class
// 하나의 .java 파일안에서 여러개의 클래스를
// 설계할 수 있다.
// 단. 하나의 자바 파일에서 접근제어 지시자 public class
// 단 하나만 설계 가능하다.
class B {
String name;
int height;
int weight;
int age;
String tel;
}
class C extends A {
String phone;
}
상속 시 접근 제어자
- 기존의 멤버변수처럼 private를 선언하면 타 패키지의 하위 클래스에서 접근 불가
→ 패키지 외부 클래스는 접근 불가 하지만 하위 클래스 경우는 접근 가능한 protected 사용
다중 상속 불가능
- 예외 사례 단 한가지 (Object 클래스)
하위 클래스의 생성
-하위 클래스의 생성자에선 반드시 상위 클래스의 생성자를 호출함(자동으로 메모리 로드)
→ 명시하지 않을 시 기본 생성자 호출됨
부모 클래스에 사용자 정의 생성자가 있는 경우
자식 클래스의 생성자에서 반드시 부모 클래스의 생성자를 먼처 호출해야 한다.
(부모 클래스에 기본 생성자가 없기 때문에 오류발생)
super 키워드
- 하위 클래스가 가지는 클래스에 대한 참조 값
- 상위 클래스의 생성자를 호출