본문 바로가기

JAVA/DAY 15 _ 23.09.06

Interface review

// interface : 

// 각 클래스가 공통 인터페이스를 구현함으로써 통일된 동작을 제공하고, 다른 클래스와 상호 작용할 수 있도록 함
// --> 상속 용도의 클래스..! 근데 일종의 계약이야.
// --> 인터페이스를 구현하는(= 계약한) 클래스는 해당 인터페이스에 정의된 모든 메서드를 반드시 구현해야 힘
// --> 이때, implements 키워드를 사용하여 클래스가 특정 인터페이스를 구현한다고 선언한다!!

// 이제 main에 클래스 대신 interface를 선언 --> 싹다 추상화임
// 인터페이스는 하위 클래스에서 구현될 '메소드만 선언하고, 구현은 하지 않는다'
// ★★★ 메소드는 무.조.건. public!!! (일반적 표현방법 : public + return타입 + 매소드명 + ();) ★★★ 

 

 

// interface와 계약한 클래스는 인터페이스의 메서드들을 다 실행시켜야하지? (= abstract가 있어서!)

interface AAA{

	public abstract void test1();	// 정확한 표현방법
	public void test2();		
    // 일반적 표현방법 (--> abstract빼도 의미가 없어. 어차피 추상화클래스야. 밑에도 마찬가지겠지?)
	abstract void test3();
	void test4();
	
}

 

 

// implements : 인터페이스를 구현하는 클래스를 선언할 때 사용 (상속과 비슷한 개념)
// --> "implements"를 사용하면 해당 클래스는 인터페이스에서 정의한 '모든 추상 메서드를 반드시 구현' 해야함!

 (= 오버라이딩해야한다.)

class TTT implements AAA{
	
	public void test1() {
		
		System.out.println("AAA로 부터 상속받은 test1 매서드");
	}
	
	public void test2() {}
	
	public void test3() {}
	
	public void test4() {}
}

 

// Main

AAA a = new TTT();		// 이게 정석이야 이제. 다형성을 사용해야해!!!
a.test1();			// 원래는 a는 참조타입인 AAA의 test1을 가져온다
				// 난 지금 오버라이딩을 했지? --> TTT클래스의 test1이 실행됨
				// --> "AAA로 부터 상속받은 test1 매서드"가 출력된다.

 

'JAVA > DAY 15 _ 23.09.06' 카테고리의 다른 글

interface 활용ex - self  (0) 2023.09.14
Abstract Class_ 스타ex활용  (0) 2023.09.14
Overiding  (0) 2023.09.13
상속_array활용3  (0) 2023.09.13
상속_array활용2  (0) 2023.09.12