추상클래스
추상클래스 - 미완성 설계도
추상메서드 - 선언부만 있고 구현부가 없는 메서드
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 인터페이스를 구현한 클래스의 인스턴스를 반환
'IT 관련 > JAVA' 카테고리의 다른 글
자바(java) java.lang패키지(1) (0) | 2022.07.26 |
---|---|
자바 예외처리 (0) | 2022.07.07 |
자바 객체지향언어II(제어자 ,다형성) (0) | 2022.06.29 |
자바 객체지향언어II(상속,오버라이딩,super (0) | 2022.06.28 |
자바 객체지향언어I (생성자 , 변수의 초기화) (0) | 2022.06.23 |