ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상속
    JAVA 2023. 12. 7. 22:51

    상속 정의 

    예를들자면

    [A클래스] 내부의 멤버(멤버변수,생성자,메소드)를 [B클래스][C클래스][D클래스][E클래스]~~~~[Z클래스]등등 안에서

    객체화 없이 자기 멤버처럼 호출할수 있는 관계를 상속이라고 한다.

    ⭐ 상속관계가 아니라면 반드시 객체화 후 멤버를 호출해야 한다.

     

    위 예시의 상속관계에선

    A클래스를 슈퍼클래스라 부르고

    B~ Z클래스를 서브클래스라고 부름.

     

    상속관계 코딩형식

    슈퍼클래스 형식

    [public][abstract] class 슈퍼클래스명 {~}

     

    서브클래스 형식

    [public][abstract|final] class 서브클래스명1 extends 슈퍼클래스명{~}

    슈퍼클래스 선언시 final이 붙으면 절대 안된다 final이 붙으면 서브클래스가 상속할수 없다.

     

    상속의 장점

    1개의 슈퍼클래스 멤버를 n개의 서브클래스에서 객체생성 코드없이
    호출이 가능하므로 멤버의 중복을 막아 유지보수성이 좋아진다.

     

    • 슈퍼클래스는 1개 이상의 서브클래스를 가질수 있다. 허나 서브클래스는 단 1개의 슈퍼클래스만 가질수 있음.
      즉 다중상속이 불가능함.
    • 코딩상 스버클래스만 객체화하면 슈퍼클래스는 자동으로 객체화 된다.
    • 서브클래스의 생성자 첫줄에는 반드시 슈퍼클래스의 생성자를 호출하는 super() 또는 super(데이터)가 있다 없으면
      컴파일시 자동삽입.
    • 서브클래스 영역에서 슈퍼클래스의 멤버변수 또는 메소드를 호출할 수 있다.
    • 서브클래스 영역에서 슈퍼클래스의 메소드를 규칙준수하여 재정의 가능 

    재정의(overriding)란?

    슈퍼클래스가 소유한 메소드를 서브클래스에서 같은 메소드 이름으로 재정의 하는것을 말한다.

     

    재정의 하는 이유

    슈퍼클래스의 메소드를 서브클래스가 그대로 사용하기에 용도가 맞지않아 실행구문을 원하는 형태로 수정해 사용하기 위함.

    이걸 다형성이라고도 함.

     

    메소드 재정의 규칙

    • 슈퍼클래스의 메소드에 private final static이 없어야함
    • 리턴형 메소드명 매개변수개수 매개변수 자료형이 모두 같아야함. 실행구문만 바꿀수 있음
    • 서브클래스의 보안키워드 범위는 슈퍼클래스의 접근지정자 범위보다 같거나 커야함.
    • @Override 어노테이션을 메소드 앞에 붙이면 부조건 오버라이딩 규칙을 검사하여 에러여부를 검사.

    @Override?

    👉어노테이션(annotation)의 일종이다. 오버라이딩 규칙을 검사하는데 쓰임.

     

    어노테이션(annotation)?

    자바에서 클래스명, 멤버변수명, 메소드명, 매개변수명 에 붙어서 어떤 특이한 기능을 부여하는 일종의 표기법이다.

    'JAVA' 카테고리의 다른 글

    자바에서 기본 제공하는 API (배열)  (1) 2023.12.08
    인터페이스(interface)  (1) 2023.12.08
    클래스(Class)  (2) 2023.12.05
    반복문  (1) 2023.12.05
    조건문  (1) 2023.12.05
Designed by Tistory.