#TIL Java Study, 인터페이스 ( Interface )

Yimy·2020년 11월 5일
0

Java Study

목록 보기
11/15

23. 인터페이스 ( interface )

: 껍데기, 알맹이가 없음. > 구현되면 안됨.
Q. int i =10;은 되는데?
: 인터페이스는 어차피 상수라서 앞에 final 이 생략된 것. 메소드 앞에도 abstract 가 생략된 것.
! 인터페이스를 알면 하산하라!, 숨겨진게 많음.
( 확장자는 java > 컴파일하면 class 나옴. > 인터페이스도 class의 일종. )

  • JDK7 이하 : '상수' 와 '추상메소드' 로 구성된 '껍데기'
  • JDK8 이상 : '상수' 와 '추상메소드' 와 'static 메소드' 와 'default메소드' 로 구성된 '껍데기'

(1) 생략

1) interface 앞에는 abstract가 생략됨.
2) public static final (멤버 앞에 생략되어 있음.)
3) 메소드 앞에는 public abstract 가 생략 됨.
4) static 메소드에는 public이 생략 됨. (다른 패키지에서 A.m1() 이렇게 그냥 가져올 수 있음.)
5) default 메소드에도 public이 생략 됨. (다른 패키지에서 A.m1() 이렇게 그냥 가져올 수 있음.)
( 디폴트 메소드는 이미 구현된 메소드라는 의미. )

-패키지가 다를때 사용하려면, 사용하려는것의 class가 public 이어야함. 상속이면 protected

(2) 특징

1) 객체는 완벽한 자식클래스를 만들어서 그 객체를 생성 후 형변환해서 만든다. (자식 > 부모로)
2) 인터페이스의 static 메소드는, 인터페이스 이름으로만 접근 가능. (객체의 이름으로 접근불가)
3) 자식 클래스를 만들때에는 implements 사용
(다중상속 가능 : class B implements B1, B2, ...)
4) 인터페이스 끼리의 상속은 extends 사용
(다중상속 가능 : interface B3 extends B1, B2, ...)
: 부모의 추상메소드 + 내 추상메소드 다 구현해야 실행할 수 있음.
5) 일반적인 자식 클래스의 형태
class BChild extends Object(클래스) implements B1, B2, B3....

24. 추상클래스와 인터페이스의 차이점

(1) 공통점

  • 추상메소드를 가질 수 있음. (가지지 않아도 됨.)
  • 완벽한 자식객체를 생성해서 형변환 (자식>부모로)

(2) 차이점

  • 클래스 / 인터페이스 근본 특성
  • 추상클래스는 일반메소드 (구현된 메소드) 와, 일반멤버변수와 생성자를 가질 수 있다.
  • 인터페이스는 가질 수 없음.
profile
Better version

0개의 댓글