728x90
1. 인터페이스
인터페이스는 자바에서 클래스와 동일하나 메서드의 알맹이가 없는 클래스입니다.
기본 골격은 클래스와 동일하나 class 대신 interface라는 선언이 붙어 있고, 메소드는 몸체 없이 세미콜론으로 마무리 됩니다.
interface Printable {
public void print(String doc); // 추상 메서드
}
위의 코드처럼 알맹이가 비어있는 메소드를 추상 메소드라고 부릅니다.
이러한 인터페이스를 대상으로는 인스턴스 생성이 불가능하며, 다른 클래스에 의해 상속만 될 수 있습니다.
또한 상속을 받을때도 extends가 아닌 implements라는 키워드로 사용이 됩니다.
class Printer implements Printable {
public void print(String doc) {
System.out.println(doc);
}
}
그래서 클래스가 인터페이스를 상속하는 행위는 상속이 아닌 구현이라고 합니다.
알맹이가 비어있는 메소드를 가져와서 알맹이를 채우는 과정을 하기 때문입니다.
그리고 인터페이스는 다음과 같은 특징을 가지고 있습니다.
- 한 클래스는 둘 이상의 인터페이스를 동시에 구현할 수 있습니다.
- 상속과 구현은 동시에 가능합니다.
class Robot extends Machine implements Movable, Runnable {...}
또한 다음과 같은 특징도 있습니다.
- 인터페이스의 형을 대상을 참조변수의 선언이 가능
- 인터페이스의 추상 메소드와 이를 구현하는 메소드 사이에 오버라이딩 관계가 성립
interface Printable {
public void print(String doc);
}
class Printer implements Printable { // Printable을 구현하는 printer 클래스
public void print(String doc) {
System.out.println(doc); // 추상 메소드 오버라이딩
}
}
public class prac1 {
public static void main(String[] args) {
Printable prn = new Printer(); // Printable형 참조변수 선언 가능
prn.print("Hello java");
}
}
인터페이스인 Printable을 형을 하는 prn 참조변수를 선언하였습니다.
결과)
Hello java
2. 추상 클래스(abstract class)
하나 이상의 추상 메소드를 갖는 클래스를 가리켜 "추상 클래스"라고 합니다.
예시)
abstract class House { // 추상 클래스
public void methodOne() {
System.out.println("method one");
}
public abstract void methodTwo(); // 추상 메소드
}
class MyHouse extends House {
@Override
public void methodTwo() {
System.out.println("method two");
}
}
하나 이상의 추상 메소드를 가지고 있기에 추상 클래스라 부릅니다. 그리고 이러한 추상 클래스에는 abstract 선언을 class 앞에 해주어야 합니다. 또한 추상 메소드도 abstract 선언을 자신의 형앞에 해주어야 하며 void 앞에 abstract를 선언하였습니다.
이러한 추상 클래스에는 다음과 같은 특징이 있습니다.
- 인스턴스 생성 불가
- 다른 클래스에 의해 추상 메소드가 구현되어야 함
인터페이스와 매우 유사하지만 구현이 아닌 상속의 형태를 띄며 extends를 사용하였습니다.
728x90
'[WEB] > [Java]' 카테고리의 다른 글
[Java] 윈도우 자바 환경변수 설정방법 (0) | 2022.09.29 |
---|---|
[Java] 자바 컬렉션 2 (0) | 2022.09.25 |
[Java] 자바 컬렉션 (0) | 2022.09.24 |
[Java] 자바 제네릭 클래스, 제네릭 메소드 (0) | 2022.09.24 |
[Java] Object 클래스 (0) | 2022.09.23 |