JAVA
221026 인터페이스 구현과 메서드 호출하기
주영재
2022. 10. 26. 14:20
//인터페이스
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임. 상속이나 구현을 하는 클래스를 따로 만들지 않고 바로 사용