반응형
인터페이스는 추상클래스의 한단계 더 추상화된 클래스라고 볼 수 있다.
두 클래스의 차이점으로
- 추상클래스는 단일상속, 인터페이스는 다중상속이다.
- 추상클래스는 부모로 부터 요소를 물려받는 상속의 의미로 기능을 확장시키는 의미이다.
- 인터페이스는 내부의 요소들을 이를 구현한 클래스에서 반드시 사용하도록 강제하는 것으로 부모로부터 요소를 물려받는 상속의 의미가 아니다.
다음 예제를 통해 이 사실을 확인해보자.
Ex 예제
다음은 추상클래스를 이용한 예제이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package abstract_;
abstract class A7 {
abstract String b();
public String c(){
return "추상클래스 내의 일반 메서드 c";
}
}
class B8 extends A7 {
public String b() {
return "추상클래스 내의 추상메서드 b";
}
}
public class Abstract_Nom {
public static void main(String[] args) {
B8 obj2 = new B8();
System.out.println(obj2.b());
System.out.print(obj2.c());
}
}
|
cs |
추상클래스 내에 메서드 추상메서드 b()와 일반메서드 c()를 선언해주었다. 그리고 추상메서드를 상속하는 클래스 B8에서 추상메서드 b()를 오버라이딩 해주었다.
그리고 main() 에서 b() 와 c() 를 호출 한 결과 두 메서드에 다 접근이 가능한 것을 볼 수 있다.
추상클래스라고 할지라도 내부에 일반메서드를 선언할 수 있고 이 추상 클래스를 상속받는 일반클래스에서 일반메서드는 구현해주지 않아도 된다.
Ex 예제
다음은 인터페이스를 이용한 예제이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package interface_;
interface Travel{
void tour();
}
interface Eat{
void food();
}
class Incheon implements Travel,Eat{ // 두개의 인터페이스를 구현
public void tour() { // 메서드 오버라이딩 public 메서드
System.out.println("소래포구.");
}
public void food() {
System.out.println("조개구이.");
}
}
public class Interface_B {
public static void main(String[] args) {
Incheon obj = new Incheon();
obj.tour();
obj.food();
}
}
|
cs |
두 인터페이스를 구현하는 클래스를 생성후 각각의 인터페이스 메서드를 구현해준 모습이다.
추상클래스의 경우 다중상속이 불가하지만 인터페이스의 경우 다중상속이 가능한 모습이다.
반응형
'Java > Java 기초문법' 카테고리의 다른 글
[JAVA 기초] 자바 예외처리 2 - 예외의 종류(Checked, Unchecked)와 예외 발생(throws, throw) (0) | 2021.04.11 |
---|---|
[JAVA 기초] 자바 예외처리1 - try catch finally (0) | 2021.04.10 |
[JAVA 기초] 자바 인터페이스 (interface) (0) | 2021.04.09 |
[JAVA 기초] 추상클래스와 추상메서드 (abstract) (0) | 2021.03.29 |
[JAVA 기초] 자바 다형성(polymorphism) (0) | 2021.03.12 |
댓글