-
2023년 1월 18일/ 2023년 1월 19일/ 2023년 1월 20일
- 단일 상속만 가능하다
- 자식 클래스를 개체로 생성할때, 부모 클래스가 먼저 객체화 된다.
- 모든 클래스는 Object클래스로부터 시작하는 상속관계의 하위 객체이다
- 부모 클래스의 자원을 자식 클래스에서 사용한다라는 개념
- 생성자는 상속이 불가능하다(생성자는 호출만 가능)
- 부모와 자식 필드에 같은 변수가 있어도 선언을 다르게 본다
- 자식은 this를 써서 접근 하고 부모꺼는 super를 이용해서 접근한다
- 매서드 재정의
- 부모 클래스의 메서드를 자식메소드에서 재정의 할 때 오버라이딩 이라고 한다(덮어쓰기)
- 메서드 이름은 같고 파라미터가 다르면 오버로드
- 부모가 디폴드 였으면 자식는 디폴트 이상 프로텍티드 나 퍼블릭으로 해야한다
- 다형성
- 타입이 조상이고 인스턴스가 자손일때
- 선언될 타입이 조상 인스턴스가 자손
- Car taxi = new Taxi();//다형성 선언된 타입이 조상(CAR)이고 인스턴스(new Taxi()가 자손일때
- 추상클래스
- 파일쪽에 A라는 식별자가 있고
- abstract는 추상화 클래스 이므로 인스턴스 생성이 불가능하다
- 구상화 될 필요가 없는 클래스
- 부모가 추상클래스면 자식도 추상클래스가 되는데 추상메소드를 자식 클래스에서 메소드를 구상하면 구상 클래스(자식)이 된다.
- 각기 다른 클래스들을 공통된걸 부모클래스를 만든걸 추상클래스라 한다
- 추상메소드
- abstract 키워드를 사용하여 메소드 정의를 한다.
- 추상메소드가 하나라도 있으면 추상 클래스가 된다.
Super
- 자식클래스에서 변수가 없으면 부모클래스에서 변수와 값을 가져온다(부모의 값도 자식이 상속을 받는다)
인스턴스 메소드의 호출은 현재 실행중인 인스턴스 기준으로 한다.(?)
- 동적바인딩
- 인스턴스가 달라질수 있어서 메소드를 호출하기 직전에 바인딩
- 컴파일시 모름 실행시점에서 메소드를 호출하기 직전에 바인딩
- 다이나믹바인딩
- 정적바인딩
- 컴파일시 값을 넣는게 정적바인딩(미리 코딩 된것들?)
인터페이스의 다형성
상속으로 못하는걸 수평적으로 상속받은 것