Java 프로그램 개발 중 abstract와 인터페이스의 차이점 상세 설명

2432 단어 javaabstractnterface
기본 개념부터 말씀드릴게요.
자바 언어에서 abstractclass와interface는 추상적인 클래스 정의를 지원하는 두 가지 메커니즘이다.바로 이 두 가지 메커니즘의 존재로 인해 자바에게 강력한 대상을 향한 능력을 부여했다.abstractclass와interface는 추상적 클래스 정의에 대한 지원에 있어 매우 큰 유사성을 가지고 심지어 서로 바꿀 수 있기 때문에 많은 개발자들이 추상적 클래스 정의를 할 때 abstractclass와interface의 선택에 대해 비교적 자유롭다.사실 둘 사이에는 큰 차이가 있다. 그들의 선택은 심지어 문제 분야의 본질에 대한 이해, 디자인 의도에 대한 이해가 정확하고 합리적인지를 나타낸다.
abstractclass와interface는 자바 언어에서 모두 추상류(본고의 추상류는 abstractclass에서 번역된 것이 아니라 추상체를 나타낸다. abstractclass는 자바 언어에서 추상류를 정의하는 데 사용되는 방법이므로 독자가 주의해서 구분하라)를 정의한다. 그러면 추상류가 무엇인지, 추상류를 사용하면 우리에게 어떤 이익을 가져다 줄 수 있을까?
대상을 향한 개념에서 우리는 모든 대상이 클래스를 통해 묘사되는 것을 알고 있지만 반대로 그렇지 않다.모든 클래스가 대상을 묘사하는 데 쓰이는 것은 아니다. 만약에 하나의 클래스에 구체적인 대상을 묘사할 충분한 정보가 포함되지 않는다면 이런 클래스는 추상적인 클래스이다.추상류는 흔히 우리가 문제 분야를 분석하고 디자인하는 과정에서 나온 추상적인 개념을 나타내는 데 사용되는데 일련의 보기에는 다르지만 본질적으로 같은 구체적인 개념에 대한 추상이다.예를 들어 만약에 우리가 도형 편집 소프트웨어를 개발하면 문제 영역에 원, 삼각형이라는 구체적인 개념이 존재하고 서로 다른 개념이 존재하지만 모두 형상이라는 개념에 속한다. 형상이라는 개념은 문제 영역에 존재하지 않고 추상적인 개념이다.바로 추상적인 개념이 문제 영역에 대응하는 구체적인 개념이 없기 때문에 추상적인 개념을 나타내는 추상류로는 실례화할 수 없다.
자바 개발에서 허함수와 인터페이스를 자주 사용하는데 이 두 가지 차이는 무엇입니까?
abstract: 하위 클래스 안에 부모 클래스만 계승할 수 있습니다.
인터페이스: 하위 클래스는 여러 개의 인터페이스를 실현할 수 있다
그럼 abstract는 언제 쓰고, 인터페이스는 언제 쓰나요?
어떤 자류와 부류가 isa관계일 때, 예를 들어 아시아인이 한 사람이면 아시아인의 자류는 한 사람의 부류를 계승할 수 있다.
자류와 부류가 like a 관계일 때, 예를 들어 아메리카 슈퍼맨은 슈퍼맨과 같다. 슈퍼맨의 능력은 모든 사람이 가지고 있는 것이 아니기 때문에 모든 사람의 속성이 아니다. 우리는 초능력을 사람의 부류에 귀속시킬 수 없다. 이때 인터페이스를 사용할 수 있다.
코드 예:

public abstract class Man {
public abstract void eat();
} 
public interface SuperPower {
public void superPower();
}
public class AsiaMan extends Man { 
@Override
public void eat() {
System.out.println(" ");
}
} 
public class AmericanSuperMan extends Man implements SuperPower {
public void superPower() {
System.out.println(" ");
}
@Override
public void eat() {
System.out.println(" ");
}
}
public static void main(String[] args) {
Man anAsiaMan = new AsiaMan();
AmericanSuperMan anAmericanSuperMan = new AmericanSuperMan();
anAsiaMan.eat();
anAmericanSuperMan.eat(); 
anAmericanSuperMan.superPower();
} 
실행 결과:
미국인은 칼과 포크로 먹는다
미국 슈퍼맨은 날 수 있다
아시아인은 젓가락으로 먹는다
abstract와interface를 정확하게 사용하면 코드의 가독성을 높일 수 있습니다. 사람들이 extend를 볼 때 이것은 is a가 무엇인지, implement를 볼 때 이 종류가 어떤 특성을 가지고 있는지 알 수 있습니다 like a

좋은 웹페이지 즐겨찾기