//인터페이스
interface Starcraft{
public void attack();
}
//인터페이스를 구현한 클래스를 생성
class Protoss implements Starcraft{
public void attack() {
System.out.println("질럿의 공격");
}
}
public class AnonymousMain {
public static void main(String[] args) {
//인터페이스를 implements한 클래스를 만들고 인스턴스를 만든 후 메서드를 호출
Protoss p = new Protoss();
p.attack();
//인터페이스를 implements한 클래스를 만들지 않고 인스턴스를 생성해서 호출
//클래스는 프로그램이 끝날 때까지 사라지지 않는다. 이 방식은 클래스를 만들지 않고 인터페이스를 구현한 인스턴스를 만들기에 낭비가 적다.
Starcraft z = new Starcraft() {
@Override
public void attack() {
System.out.println("저그의 공격");
}};
z.attack();
//대입된 인스턴스에 따라 다른 메서드를 호출 - 폴리모피즘(다형성)
Starcraft star = new Protoss();
star.attack();
star = new Starcraft() {
public void attack() {
System.out.println("저그의 공격");
}};
star.attack();
//변수를 만들지 않고 인스턴스만 생성해서 메서드 호출
new Starcraft() {
@Override
public void attack() {
System.out.println("테란의 공격");
}
}.attack();
}
}
질럿의 공격
저그의 공격
질럿의 공격
저그의 공격
테란의 공격
점점 줄여가는 과정. 마지막엔 변수조차 만들지 않았다,
저그와 테란은 Anonymous임. 상속이나 구현을 하는 클래스를 따로 만들지 않고 바로 사용
'JAVA' 카테고리의 다른 글
221026 Set 실습 -ArrayList와 비교 (0) | 2022.10.26 |
---|---|
221026 Set (0) | 2022.10.26 |
221026 Queue (0) | 2022.10.26 |
221026 Stack (0) | 2022.10.26 |
221025 Stack, queue, Deque (0) | 2022.10.25 |