Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

재훈재훈

추상클래스와 인터페이스 본문

Computer Engineering/JAVA

추상클래스와 인터페이스

jaehoonx2 2018. 4. 7. 17:30

자료 출처 - 부경대 권오흠 교수님, <JAVA로 배우는 자료구조> 강의


추상 클래스

- 추상(abstract) 메서드는 선언만 있고 구현이 없는 메서드

- 추상 메서드를 포함한 클래스는 추상 클래스 -> 구체화된 메서드도 가질 수 있음

- 추상 메서드와 추상 클래스는 키워드 abstract로 표시

- 추상 클래스는 객체를 만들 수 없음. 따라서 서브 클래스를 만드는 용도로만 사용됨.


예시)

    public abstract class Event {                                            // 추상 클래스   

public String title;

public Event(String title) {

this.title;

}


public abstract boolean isRelevant(MyDate date);         // 추상 메서드

}



인터페이스

- 추상 메서드만을 가진 순수한 추상 클래스 -> 일종의 극단적인 추상 클래스

Q. 그러면 추상 메서드로만 구성된 추상 클래스는 인터페이스와 완전히 동일한가?

A. No! 

추상클래스와 인터페이스의 중요한 차이 - 인터페이스는 다중 상속을 허용함!

Java에서는 다중 상속을 허용하지 않는다.

하지만 하나의 클래스가 여러 개의 인터페이스를 구현하는 것은 가능

- static final 데이터 멤버(상수)를 가질 수 있음 -> 인터페이스 안 멤버는 상수만을 가질 수 있다.


예시)

public interface Payable {                                            // 인터페이스

public double calcSalary();                                     // cacSalary(), salaried()는 추상메서드(인터페이스 안에서 추상메서드는 abstract 생략 가능)

public boolean salaried();                                      // Payable 인터페이스를 구현하는 클래스는 이 두 메서드를 반드시 구현해야 함


public static final double DEDUCTIONS = 25.5;

}


public class Professor implements Payable {                // Payable 인터페이스를 구현한 Professor 클래스

public boolean calcSalary() { …. }                        // 인터페이스 안의 추상 메서드를 구현함

public boolean salaried() { …. }

}

'Computer Engineering > JAVA' 카테고리의 다른 글

제네릭(Generic)  (0) 2018.04.07
파라미터의 다형성  (0) 2018.04.07
다형성과 동적 바인딩  (0) 2018.04.07
상속과 생성자  (0) 2018.04.07
참조변수(클래스 및 배열)의 선언 및 생성 시 주의할 점  (0) 2018.04.07