abstract
를 붙여서 클래스를 선언한다.// 추상 클래스 선언
public abstract class 클래스 {
필드;
생성자;
메소드;
}
abstract
를 붙여서 선언한다.{}
)가 없다.// 추상 클래스 예제
abstract class MyObject {
int n;
public void method1() {}
public abstract void method2();
}
class YourObject extends MyObject { // 추상 클래스를 상속받으려면 자식 클래스도 추상 클래스여야 한다.
// 그러나 자식 클래스를 추상 클래스로 하지 않으려면 추상메소드를 override해서 구현해야 한다.
@Override
public void method2() {
}
}
public class AbstractExample {
public static void main(String[] args) {
// MyObject mo = new MyObject(); // 추상 클래스는 인스턴스화(객체화) 불가능
YourObject yo = new YourObject(); // 상속받아서 추상메소드를 구현한 클래스는 인스턴스화 가능
}
}
instanceof
로 상속여부를 확인할 수 있다!이클립스에서 인터페이스 생성 방법
👉
File
➡New
➡Interface
public interface 인터페이스명 {
// 상수
타입 상수명 = 값;
// 추상 메소드
타입 메소드명(매개변수, ...);
// 디폴트 메소드
default 타입 메소드명(매개변수, ...) {...}
// 정적 메소드
static 타입 메소드명(매개변수) {...}
}
public static final
로 생성_
)로 단어 연결📌 방법1. 클래스 생성 시 인터페이스 추가
📌 방법2. 이미 생성한 클래스의 이름 뒤에 implements
를 써서 인터페이스 추가
public class 구현클래스명 implements 인터페이스명 {
// 인터페이스의 추상 메소드를 override하여 실체 메소드 선언
}
public
이므로 더 낮은 접근 제한으로는 작성 불가public
을 생략하면 컴파일 에러가 난다.abstract
를 작성해야 한다.Override
를 이용하여 인터페이스의 추상 메소드를 실체 메소드로 구현하면 된다.예제
public interface MessageBean { public void sayHello(String name); // interface의 추상 메소드 }
public class MessageBeanKr implements MessageBean { @Override public void sayHello(String name) { System.out.println("안녕하세요, " + name + "님!"); } }
public class MessageBeenEn implements MessageBean { @Override public void sayHello(String name) { System.out.println("Hello, " + name + "!"); } }