ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Github
  • java 기초
  • java
  • matplotlib
  • README.md
  • 파이썬
  • staged
  • string to int
  • 정렬
  • git
  • java base
  • 알고리즘
  • java.net
  • 자바
  • 커밋
  • 합병정렬
  • binarySearch
  • java.lang
  • git add.
  • Python

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[Java] 인터페이스 interface, 다중 상속, 마크 인터페이스
Java/Java(base)

[Java] 인터페이스 interface, 다중 상속, 마크 인터페이스

2021. 12. 1. 02:10

인터페이스(interface)

틀이 극대화

  • 추상클래스를 고도화시킨 문법, 반드시 추상메소드와 상수만 선언해야 한다.
    • 구현이 되어 있는 것이 없음(틀의 역할만 함)
  • 다른 클래스에서 인터페이스를 지정받을 때 implements를 사용함
  • 틀로 받아 올 수 있는 interface의 개수에 제한이 없다.
  • 지정 받은 클래스는 인터페이스가 가지고 있는 추상 메소드를 반드시 재정의해야한다.
  • 인터페이스는 상수와 추상메소드만 존재하므로 그냥 선언해도 상수와 추상메소드로 선언됨.
    • public static final 상수 : static final 생략가능
    • abstract 리턴타입 함수명 : abstract 생략가능
    • interface에는 public 이 필수
jdk 8버전 이후부터는 인터페이스에 default 메소드를 선언할 수 있다. 사실상 다중상속을 지원
  • 인터페이스들 끼리 다른 클래스와의 메소드 모호성이 발행한다면 지정, 상속받은 클래스에서 명시적으로 그 메소드를 재정의 해주어 모호성을 해결해주어야한다.

인터페이스에서 상수 선언

public static final

  • static : 상수이기 때문에 객체화 없이 사용할 수 있어야 한다.
  • final : 상수이기 때문에 바뀌면 안되는 값이다.

인터페이스 사용 이유

자바에서 class 상속은 오로지 부모클래스 하나만 상속 가능

인터페이스는 여러개의 다중상속이 가능하다.

다중 상속 multi interface

public interface Animation{
    abstract void watch();
}
public interface Action{
    abstract void watch();
}
public class Incredible implements Animation, Action{
    @Override
    public void watch() {
        System.out.println("액션 장르의 애니메이션 영화를 봅니다.");
    }

    void doSomething() {
        //Animation과 Action의 watch() 모두 사용 (다중상속)
        Animation.super.watch();
        Action.super.watch();
    }
}

마크 인터페이스 - 표시를 위한 인터페이스

class B extends A implements C
  • 클래스 B는 A의 자식 클래스이자, C의 인터페이스를 가진다.

ex) if( list[i] instanceof C ) ... 사용 가능(C의 타입을 가지는 느낌으로 구별가능)

'Java > Java(base)' 카테고리의 다른 글

[Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제  (0) 2021.12.01
[Java] 내부 클래스 Inner class , 익명 클래스 Anonymous Inner class  (0) 2021.12.01
[Java] 추상클래스 abstract class, final  (0) 2021.12.01
[Java]접근 권한 제어자 public, private, protected, default / getter, setter  (0) 2021.11.30
[Java] Upcasting(업캐스팅), Downcasting(다운캐스팅), instanceof  (0) 2021.11.30
    'Java/Java(base)' 카테고리의 다른 글
    • [Java] 예외처리 try-catch-finally / throw throws 차이점 및 예제
    • [Java] 내부 클래스 Inner class , 익명 클래스 Anonymous Inner class
    • [Java] 추상클래스 abstract class, final
    • [Java]접근 권한 제어자 public, private, protected, default / getter, setter
    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바