9일차 2021.02.04.목 JAVA
Is ~ a 관계
- 상위계층에서 하위계층으로 내려가는 관계, 상속해주는 클래스가 슈퍼클래스 상속받는 클래스가 서브클래스이다. 상속의 특징은 확장성, 재사용성이다.
- is like a 관계를 가지면 안 된다.
- 자바는 100% 상속관계. (extends class(명))
- 자바는 객체끼리는 단일상속만을 지원한다.(명확성) C++은 다중상속을 지원하지만 모호성(ambigious) 때문에 지원하지 않는다.
- super class의 private member는 직접접근이 허용이 안 된다.(캡슐화)
super() : super call
: super class의 생성자를 호출. 호출 시 첫 번째 줄이 아니면 에러발생.
: sub class의 생성자함수의 첫 번째 라인에 항상 존재한다.
- 명시적으로 사용하는 경우는 부모의 오버로딩된 생성자 중 하나를 호출하기 위해서
※팀별 과제
직원 급여관리 프로그램
1. 최소 3층 구조
2. 각 클래스별로 필드, 메소드 다 정의
3. 사용자 (기업)
class A{
public A() {
super();
System.out.println("Super class");
}
}
public class Test_Is_A extends A{
public Test_Is_A() {
//super();
System.out.println("Sub class");t
}
public static void main(String[] args) {
Test_Is_A is = new Test_Is_A();
}
}
결과:
오버라이딩.
1. super class에 있는 메소드를 sub class에서 ‘똑같이’ 제공하는 것. (↔ 오버로딩은 매개변수가 다름)
오버라이딩 시 자식의 메소드가 우선이 된다.
super.메소드 를 호출하면 부모의 메소드가 호출된다.
2. 목적
1) 부모클래스의 메소드를 재정의
2) 부모클래스의 메소드를 확장
3) 동적바인딩