TIL 2022-09-27 상속

JYR00·2022년 9월 27일
0

TIL

목록 보기
16/60

! 메소드 재정의 !
! 다형성 !

상속

객체 지향 프로그램(자식이 주체)

  • 자식(하위, 파생) 클래스가 부모(상위)클래스의 멤버를 물려받는 것
  • 자식이 부모를 선택해 물려받음
  • 상속대상 : 부모의 필드와 메소드 -> 부모의 모든 멤버를 다 받음

상속 개념 활용

상속 효과

  • 부모 클래스 재사용해서 자식 클래스 빨리 개발 가능
    -카 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는 안됨 얘는 무조건 같은 클래스 내에서만 사용가능)
  • 상속 받지 않은 건 사용 불가능.

다형성, 추상클래스, 추상메서드, 인터페이스

0개의 댓글