! 메소드 재정의 !
! 다형성 !
상속
객체 지향 프로그램(자식이 주체)
- 자식(하위, 파생) 클래스가 부모(상위)클래스의 멤버를 물려받는 것
- 자식이
부모
를 선택해 물려받음
- 상속대상 : 부모의 필드와 메소드 -> 부모의 모든 멤버를 다 받음
상속 개념 활용
상속 효과
- 부모 클래스 재사용해서 자식 클래스 빨리 개발 가능
-카 run() stop() 등은 부모클래스에 있다면 굳이 만들필요없다.
- 반복된 코드 중복 줄임
- 유지 보수 편리성 제공
- 객체 다형성 구현 가능
상속 대상 제한
- 부모 클래스의 private 접근 갖는 필드와 메소드제외
-public은 모두 사용가능 private 같은 클래스에만
- 부모 클래스가 다른 패키지에 있는 경우, default 접근 갖는 필드와 메소드도 제외
클래스 상속
extend
public class B extend A ->부모인 A클래스를 자식인 B클래스가 상속한다.
- 자바는
단일상속
. 한 개 이상 클래스를 쓸 수는 없다.
자바 -> 자바스크립트(es6)
6번까지는 자유롭게 사용가능해야 한다.(메서드까지는!!)
-
변수
-
연산자
-
제어문(if,switch)
-
반복문(for, while)
-
배열
-
메서드(매개변수, 반환값)
-
클래스(멤버 변수, 멤버 메서드, 접근제한자, 정적멤버, 생성자)
-
상속
-
인터페이스
-
컬렉션(HashMap, ArrayList)
자바스크립트
-
es5 es6
-
dom 객체
부모생성자 호출 super()
-
부모 없는 자식 없음
- 부모 생성자 호출 완료 후 자식 생성자 호출 완료
-
자식 객체 생성할 때 부모객체부터 생성 후 자식 객체 생성
- super()
super는 무조건 자식 생성자의 첫 줄에 위치한다.
매서드 재정의
- 차를 상속해 줌. 하지만 튜닝 필요함 느낌 => '오버라이딩'
- '오버로딩'과 다름!! 오버라이딩은 겉모양은 똑같지만 속만 다름.
@Override 어노테이션
- 없어도 된다. 안 써도 동작됨. 있으면 동일한지 검사해줌.
- 메서드 위에 붙여줌
- 될 수 있으면 쓰자.
메소드 재정의
final 클래스와 final 메소드
- final -> 상수배울 때 나옴
- 오버라이드 금지
- method private 상속금지
- final class 상속이 안되는 클래스(부모가 될 수 없는 클래스)
ex)Math.
protected 접근 제한자
- 상속 받은 건 사용 가능.(단 default는 안됨 얘는 무조건 같은 클래스 내에서만 사용가능)
- 상속 받지 않은 건 사용 불가능.
다형성, 추상클래스, 추상메서드, 인터페이스