● 인터페이스 : 어떤 객체를 만들고 싶은지, 혹은 만들어야 하는지에 대한 약속
추상메소드 : 몸통없이 선언부만 있는 메소드로, 사용할 수 없는 미완성 상태의 메소드
interface CAT{
void eating();
void sleeping();
}
나중에 이것으로 코드를 만들 것이라는 준비과정.
구현하기 위한 틀.
interface Cat{
String species = "고양이과";
void eating();
void sleeping();
}
인터페이스 내의 추상메소드 : public abstrack 메소드 이다. 따로 작성하지 않아도 컴파일러에 의한 자동 처리.
인터페이스 내의 변수 : public static final 변수. 즉 상수이다. 따로 작성하지 않아도 컴파일러에 의한 자동 처리.
String species = static 멤버, 모두가 공유할 수 있는 상태
class puma implements Cat{
public void eating() { }
public void sleeping() {}
}
인터페이스 기반의 클래스는 인터페이스 내 추상 메소드를 오버라이딩 해야 한다.
static 멤버(클래스 멤버) 도 사용할 수 있는 상태가 된다.
class puma implements Cat{
String name = species + "퓨마";
public void eating() { }
public void sleeping() {}
public void hiding() {}
}
스태틱 멤버 = 클래스 멤버
논스태틱 멤버 = 인스턴스 멤버
스태틱 멤버는 논스태틱 멤버에 접근 불가. 그러나 그 반대는 가능.
( 인스턴스는 반드시 new 로 생성을 해야하는 대상이기 때문에, 스태틱 멤버는 반드시 존재한다.
스태틱 멤버가 존재할 때 논스태틱 멤버가 반드시 존재하지만은 않다. )
● 인터페이스 간의 상속
인터페이스의 상속이란 인터페이스를 확장해서 다른 인터페이스를 만드는 것이다.
interface Tiger extends Cat{
void hunting();
}
인터페이스에 새로운 기능을 작성할 경우 추상 메소드를 작성해야하는 의무가 생김.
이것을 해결하기 위한 문법 = 디폴트 메소드
디폴트 메소드 : 인터페이스에 기능이 있는 메소드를 추가한다.
default void attacking( ) { } ; -> 몸통까지 있는 논스태틱 메소드를 추가한다.
인터페이스도 다형성이 적용되는 대상이다.
다형성 : 다형성(polymorphism)은 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미.
인터페이스를 기반으로 참조변수를 만들 수 있다. 인터페이스로 new 할 수 없다.
Cat c = new Puma();
부모 타입의 참조변수 = 자식 타입의 인스턴스
자기가 물려준 자원에 접근할 수는 있음.
그러나 자식 타입이 가지고 있는 고유의 메소드에 접근할 수는 없음 (자식이 만든 메소드)
부모가 자식의 메소드를 오버라이딩 할 경우에는 접근이 가능함.
만약 부모 클래스가 자식 클래스를 참조해서 접근할 경우 오버라이딩을 하면 코드를 상당히 축소할 수 있음.
'자바 > 자바 복습 되새김질' 카테고리의 다른 글
자바 복습. 공부한 내용들의 간단 리뷰! (0) | 2022.11.08 |
---|---|
자바 복습. 클래스Class (0) | 2022.11.02 |
자바 복습. this() 참조 변수 사용 (0) | 2022.10.27 |
자바 복습. 상수 constant, 리터럴 literal (0) | 2022.10.27 |
자바 복습. 변수의 선언 (0) | 2022.10.27 |