1. 추상클래스
자바의 추상클래스란 그 내용을 구체적으로 명시하지 않은 클래스를 뜻한다.
특정 메소드를 정의하지 않고 추상클래스를 상속하는 하위 클래스에서 이를 정의하도록 한다.
사용하는 이유는 간단하다. 클래스들에서 공통된 변수와 공통된 메소드를 필요로 한 상황에서 메소드는 구체적으로 내용이 다르게 정의되어야 할 경우 사용한다.
1) 필드와 메소드의 통일된 규격이 필요하고 이 규격 내에서 구체적으로 구현해야 하는 경우에 사용한다.
2) 실체 클래스 개발을 효율적으로 해야할 때 사용한다.
// 추상클래스
public abstract class abclass{
// 공통 변수
int v1;
int v2;
// 추상메소드
public abstract void method1();
}
// 실체클래스
class realClass extends abclass{
@Override
public void method1(){
System.out.println("추상메소드 구현완료");
}
}
2. 인터페이스
인터페이스는 객체에 대한 사용 설명서를 정의한 것이다. 개발자가 구현하는 중에 객체와 소통할 수 있게 해주는 수단(접점)이라고 표현할 수 있다.
인터페이스 역시 자바의 대표적인 규제 방식인데 서로 관련이 없는 클래스들에서 특정 메소드를 구현할 것을 규제할 때 사용한다. 또한 특정 객체와 메소드를 소통할 때 특정 객체들을 하나로 묶어서 지칭할 수 있다. 이는 굉장한 장점으로 발휘될 수 있다.
// 인터페이스
public interface Predator {
public String getFood();
}
// 인터페이스를 구현하는 클래스들
public class Tiger extends Animal implements Predator {
public String getFood() {
return "apple";
}
}
public class Lion extends Animal implements Predator {
public String getFood() {
return "banana";
}
}
// 주키퍼 클래스에서는 인터페이스 Predator를 통해 지칭가능
public class ZooKeeper {
public void feed(Predator predator) {
System.out.println("feed "+predator.getFood());
}
}
3. 추상 클래스와 인터페이스 비교
- 클래스와 인터페이스: 클래스는 다중 상속이 불가능하고 인터페이스는 다중 구현 및 상속이 가능하다.
- 생성자의 유무: 추상 클래스는 생성자를 선언할 수 있고(생성자를 직접 호출하여 객체를 생성할 수는 없다. super() 메소드 이용), 인터페이스는 생성자를 선언할 수 없다.
- 추상 클래스는 클래스의 특징을 전부 가진다(생성자) / 인터페이스는 상수와 추상 메소드
- 추상 클래스는 기초 클래스로 활용되고 인터페이스는 하위 클래스에서 특정 기능을 강요할 때 사용한다.
- 둘 다 다형성을 구현하는 기술이다, 자료형으로 선언 가능, 객체 생성이 불가능
출처: https://yolojeb.tistory.com/20 [개발 일기]
https://marobiana.tistory.com/58
'Archived(CSE Programming) > Java' 카테고리의 다른 글
Java 예외처리 (0) | 2019.11.03 |
---|---|
Java 컬렉션(Collection) (0) | 2019.11.03 |
Java 오버로딩과 오버라이딩 (0) | 2019.11.02 |
Java 멤버 변수, 접근제어자 (0) | 2019.11.02 |
Java 언어의 특징 (0) | 2019.11.02 |