자바/자바 복습 되새김질

자바 복습. 인터페이스

Tomitom 2022. 11. 1. 09:58
반응형

 

● 인터페이스 : 어떤 객체를 만들고 싶은지, 혹은 만들어야 하는지에 대한 약속 

추상메소드 : 몸통없이 선언부만 있는 메소드로, 사용할 수 없는 미완성 상태의 메소드 

 

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(); 

부모 타입의 참조변수 = 자식 타입의 인스턴스 

자기가 물려준 자원에 접근할 수는 있음.

그러나 자식 타입이 가지고 있는 고유의 메소드에 접근할 수는 없음 (자식이 만든 메소드) 

부모가 자식 고유의 메소드에 접근하려고 하면 오류가 뜸

부모가 자식의 메소드를 오버라이딩 할 경우에는 접근이 가능함. 

만약 부모 클래스가 자식 클래스를 참조해서 접근할 경우 오버라이딩을 하면 코드를 상당히 축소할 수 있음. 

 

 

 

 

 

 

 

반응형