[210609] Interface & Abstract class
추상 클래스와 인터페이스의 차이점
인터페이스
클래스가 아니며, 클래스와 관련이 없다.
추상 메소드와 상수만을 멤버로 가진다.
한 개의 클래스가 여러 인터페이스를 구현할 수 있다. (다중 구현 가능)
Java 8부터 default 메소드가 추가되었다.
default 키워드가 붙은 메소드는 구현할 수 있으며(일반 메소드처럼), 자식 클래스에서는 이를 오버라이딩할 수 있다.
인터페이스가 변경되면 이를 구현하는 모든 클래스들이 해당 메소드를 다시 구현해야하는 번거로운 문제가 있었다. 이런 문제를 해결하기 위하여 인터페이스에 메소드를 구현할 수 있도록 변경되었다.
Java 8부터 static 메소드가 추가되었다.
인터페이스에 static 메소드를 선언 가능하게 함으로써, 간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다.
목적 : 구현 객체의 같은 동작을 보장하기 위해 사용한다.
interface Animal { public abstract void cry(); }
interface Pet { public abstract void play(); }
class Cat implements Animal, Pet {
public void cry() {
System.out.println("냐옹냐옹!");
}
public void play() {
System.out.println("쥐 잡기 놀이하자~!");
}
}
class Dog implements Animal, Pet {
public void cry() {
System.out.println("멍멍!");
}
public void play() {
System.out.println("산책가자~!");
}
}
public class Polymorphism04 {
public static void main(String[] args) {
Cat c = new Cat();
Dog d = new Dog();
c.cry();
c.play();
d.cry();
d.play();
}
}
추상 클래스
클래스이며, 클래스와 관련이 있다. (주로 베이스 클래스로 사용)
추상 메소드 및 일반 메소드와 멤버도 포함할 수 있다.
한 개의 클래스가 여러 개의 클래스를 상속받을 수 없다. (다중 상속 불가능)
상속을 받아 기능을 확장시키는 데 목적이 있다.
목적 : 기존의 클래스에서 공통된 부분을 추상화하여 상속하는 클래스에게 구현을 강제화한다. 메소드의 동작은 구현하는 자식 클래스로 위임한다.
공유의 목적.
Author And Source
이 문제에 관하여([210609] Interface & Abstract class), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@iseeu95/210609-Interface-Abstract-class저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)