public abstract String getName(); // 추상 메서드
public abstract String fail() { return "fail"; } // 추상 메서드 X
abstract
키워드와 함께 원형만 선언하고, 내부를 구현하지 않은 메서드
public abstract class Member {
public abstract void logic();
}
public class SpecialMember extends Member {
@Override
public void logic() { /* 구현 */ }
}
abstract
키워드로 선언된 클래스abstract
로 선언된 클래스extends
키워드로 상속받는다.public interface IMemberList {
int MAX_COUNT = 100; // 상수 필드 public static final 이 생략되었다.
void push(); // 추상 메서드 abstract public void 가 생략되었다.
}
public class SpecialMemberList implements IMemberList {
public void push() { /* 구현 */ }
}
interface
키워드로 선언.abstract public
속성이 default로 생략 가능하다.public static final
속성이 default로 생략 가능하다.extends
키워드를 사용하여 상속받는다.implements
키워드를 사용하여 상속받는다.interface DefaultInterface {
void abstractMethod();
default void defaultMethod(){ // 디폴트 메소드 //오버라이드해도되고 안해도됨
System.out.println("Default method"); // 구현을 해주어야함
}
}
default
메소드를 구현할 수 있다.interface IHuman {
default void call() { System.out.println("우어어"); }
}
class Parents {
void call() { System.out.println("부모가 부른다"); }
}
class Child extends Parents implements IHuman {}
// Child c = new Child();
// c.call(); // 부모가 부른다