abstract class 클래스명{}
abstract class A{
public abstract int b(); // 추상메서드
public void d(){
System.out.println("world"); // 멤버변수 가질 수 있음
}
// 인스턴스생성불가하므로 오류
//public abstract int c(){System.out.println("Hello")}
}
abstract 리턴타입 메서드이름();
1. 추상클래스와 추상메서드
abstract class Parent{
abstract void sample1 (int x, int y);
abstract int sample2 ();
}
2. 자식클래스
class child1 extends Parent{
void sample1(int x, int y){ 수행문 입력 }
int sample2(){ 수행문 입력 }
}
class child2 extends Parent{
void sample1(int x, int y){ 수행문 입력 }
int sample2(){ 수행문 입력 }
}
abstract class Unit{
abstract void move (int x, int y);
void stop();
}
class Marine extends Unit{
void move(int x, int y) // 추상클래스의 추상메서드(오버라이딩 해야함)
void stimPack(); //Marine의 고유 특성
// void stop()도 상속 된 상태
}
interface 인터페이스이름{}
interface PlayingCard{
// 모든 멤버변수는 public static final~로 구성되어 있으며, 생략 가능함
public static final int SPADE = 4;
final int HEART = 3; // public static final int HEART
static int DIAMOND = 2; // public static final int DIAMOND
int CLOVER = 1; // public static final int CLOVER
// 모든 메서드는 public abstract~로 구성되어 있으며, 생략 가능함
public abstract String getCardNumber();
String getCardKind(); // public abstract String getCardKind
}
interface Fightable {
/* 각 인터페이스에 정의된 추상메서드 전부 재정의
하나라도 재정의 되어있지 않으면 컴파일 에러 발생 */
void move(int x, int y); // public abstract void move
void attack(Unit u);
}
class Fighter implements Fightable{
public void move(int x, int y){}
public void attack(Unit u){}
}
abstract class Fighter implements Fightable{
public void attack(Unit u){}
}
class Fighter extends Unit implemetns Fightable{
public void move(int x, int y){}
public void attack(Unit u){}
}