Java의 Interface 활용법

zihooy·2023년 5월 4일
0

Java Programming

목록 보기
10/21
post-thumbnail

Java의 기본 개념 중 Interface를 활용하는 방법에 대해 알아보자.

🏹 Interface를 활용하는 방법 3가지

interface Tiger {
	void f1();
}

위와 같은 코드가 있다고 할 때, interface Tiger를 이용하는 방법 3가지를 알아보자.

🏹 Interface를 활용법 1: implement

첫번째 방법은, Tiger를 implement하는 Lion class를 이용하는 것이다.

class Lion implements Tiger {
	@Override
	public void f1() {
		System.out.println(1);
	}
}
public class hello {
	public static void main(String[] args) {
		Lion obj = new Lion();
		obj.f1();

🏹 Interface를 활용법 2: 익명 클래스 객체

두번째 방법은, 익명 클래스 객체를 생성하는 것이다.
원래 interface는 객체를 생성할 수 없다.
따라서 Tiger obj02 = new Tiger(); 이 코드는 성립될 수 없다.
그러나 Tiger obj02 = new Tiger() {}와 같이 scope를 추가하고 그 안에 interface의 메소드를 구현한다면, 별도의 class를 생성하지 않고도 interface의 객체를 생성할 수 있다.

		//Tiger obj02 = new Tiger();	//	인터페이스는 객체를 생성할 수 없다 
		Tiger obj02 = new Tiger() {		// 별도의 class 없이 객체 생성 
			@Override
			public void f1() {
				System.out.println(2);
			}
		};
		obj02.f1();

위와 같이 interface안에 있는 f1()에 대한 구현을 한다면, 사용 가능하다.

🏹 Interface를 활용법 3: 익명 객체

세번째 방법은, 익명 객체를 사용하는 것이다.
new Tiger() {}와 같이 scope를 추가하고 그 안에 interface의 메소드를 구현한 후, .f1()을 통해 method를 호출한다면
별도의 객체를 생성하지 않고도 interface를 활용할 수 있다.

		
		//방법 3: 익명 객체를 사용 
		new Tiger() {		// 객체가 없음  
			@Override
			public void f1() {	
				System.out.println(3);
			}
		}.f1();
		//.f1()을 통해 해결 
	}
}

🏹 Interface를 활용하여 함수의 인수 값으로 객체 생성하기

interface A {
	void f100();
}
class C implements A {
	@Override
	public void f100() {
		System.out.println(1);
	}
}
class B {
	void f1(A a) {
		a.f100();
	}
}

위와 같이 interface A, class C implements A, class B가 있다고 가정해보자.

이 때, 위에서 언급한 것과 같이 new A() {메소드 구현}을 통해 interface지만 객체를 생성할 수 있다.

public class hello {
	public static void main(String[] args) {
		B obj = new B();
		obj.f1(new C());
		obj.f1(new A() {
			@Override
			public void f100() {
				 System.out.println(2);				
			}
		});
	}
}
profile
thisIsZihooLog

0개의 댓글