추상클래스


추상클래스 - 미완성 설계도

추상메서드 - 선언부만 있고 구현부가 없는 메서드

abstract class Player {
    int current;
    Player() {            //추상클래스도 생성자가 있어야함
        current = 0;
    }
    abstract void play(int pos);
    void play() {         //추상메서드를 사용할 수 있다.
        play(current);
    }
}

 

인터페이스


일종의 추상클래스 , 추상메서드와 상수만을 멤버로 가질 수 없다. 클래스 생성 불가

interface test {
    public static final int score = 10;
    public abstract void test2(int pos);

    final int DIAMOND=3;
    static int HEART=2;
    int CLOVER=1;
}

모든 멤버변수는 public static final이여야하며 생략가능

모든 메서드는 public abstract이여야하며 생략가능

 

인터페이스도 클래스처럼 상속가능(다중상속허용)

 

 

인터페이스는 extends 대신 implements를 사용한다.

class Fighter implements Fightable{
    public void move() {}  //조상 인터페이스가 public이 숨어있음으로 자손은 조상보다 넓어야하므로 public써야함
}
interface Fightable {
    void move(int x,int y);
}

 

인터페이스의 다형성

       - 인터페이스를 메서드의 매개변수 타입으로 지정할 수 있다.

void attack(Fightable f) {} //Fightable인터페이스를 구현한 클래스의 인스턴스를 매개변수로 받음.

        - 인터페이스를 메서드의 리턴타입으로 지정 가능

Fightable method() {
	return new Fighter();}    //Fightable 인터페이스를 구현한 클래스의 인스턴스를 반환

 

 

+ Recent posts