PHP 편집자 Zimo는 Java에서 추상 클래스와 인터페이스를 사용하는 타이밍을 탐색하도록 안내합니다. Java 프로그래밍에서는 추상 클래스를 사용할 시기와 인터페이스를 사용할 시기를 선택하는 것이 중요한 결정입니다. 이 기사에서는 이러한 일반적인 질문에 답하고 다양한 상황에서 적절한 추상 클래스나 인터페이스를 선택하는 방법을 더 잘 이해하는 데 도움을 줄 것입니다.
질문 내용
추상화와 인터페이스의 차이점은 막연하게 이해하지만, 추상화를 사용할 때와 인터페이스를 사용할 때를 도저히 이해할 수 없습니다. 인터페이스 추상화를 선택하려면 어떤 변수가 필요합니까? 그 반대의 경우도 마찬가지입니까? 온라인 답변의 대부분은 차이점을 보여주기 위한 것이지만, 나조차도 그 차이를 이해합니다. 언제가 더 적절한지 모르겠습니다.
해결책
일반적인 기존 규칙은 추상 클래스를 작성해야 할 때까지 인터페이스를 고수하는 것입니다.
Java의 인스턴스화할 수 없는 유형은 다른 유형이 준수하기 위해 interface
선택 할 수 있는 공개 인터페이스를 정의합니다.
- 인터페이스는 구현자가 정의해야 하는 공용 메서드를 선언할 수 있습니다. 이러한 모든 방법은 암시적으로
- 입니다.
abstract
,因此您不需要使用单词abstract
이전 버전의 Java에서는 인터페이스가 기본 구현을 가질 수 없었기 때문에 모든 메소드는 교체되지 않는 한 클래스에서 사용되는 기본 구현을 - ing했습니다.
abstract
。现在情况已不再是这样,接口现在可以具有在implement
최신 버전의 Java에서는 인터페이스가 - 도우미 메서드를 선언할 수 있습니다. 이는 기본 구현에 도움이 될 수 있습니다.
private
인터페이스는 생성자나 인스턴스 변수를 가질 수 없습니다. - 클래스는
- 여러 인터페이스를 가질 수 있습니다.
implement
방법이지만 일반적으로 이렇게 하고 싶을 것입니다. abstract 类
只是一个无法实例化的类。抽象类不需要定义任何 abstract
- 추상 클래스는
- ,
protected
및 package-private 등 어떤 가시성으로도 메서드를 선언할 수 있습니다.public
、private
、protected
추상 클래스는 메서드를 구현하거나 - 의 메서드는
abstract
。抽象类中的方法不是隐式abstract
암묵적으로추상
이 아니므로 추상으로 표시해야 합니다. - 추상 클래스는 생성자를 가질 수 있으며,
extend
ing 类必须使用super
자체 생성자에서 생성자를 호출할 수 있습니다. 추상 클래스는 모든 가시성의 인스턴스 변수를 가질 수 있으며 모든 상위 클래스의 인스턴스 변수처럼 작동합니다. - A 클래스의 유일한
extend
一个类,可以是abstract
类,也可以是具体类。类的abstract
ness는 허용되는 슈퍼클래스 수를 변경하지 않습니다.
public
, 추상
으로 유지할 수 있습니다. 추상 클래스 abstract class
es 应该是例外而不是常态。如果您需要维护某些内部状态,同时还让子类定义您自己的行为,则应该使用抽象类。一个很好的例子来自 java swing gui 库:AbstractButton
。 abstractbutton
是行为模糊地类似于窗口中按钮的事物的抽象父代,包括按钮、切换按钮和菜单中的项目。任何人都可以子类化 abstractbutton
并实现其成员来定义类似按钮的显示。但是 abstractbutton
还必须维护大量内部状态(其中大部分来自 jcomponent
) 전체 Swing API뿐만 아니라 창과도 통신합니다.
유형 모음에 대한 공개 인터페이스를 정의하려면 interface
를 사용하세요. 이러한 메소드 중 일부에 대한 기본 구현을 제공하고 2014년 이후에 릴리스된 Java 버전을 사용하려면 인터페이스를 사용하십시오. 기본 구현이 필요하지만 여전히 2000년대에 머물고 있다면 추상 클래스를 사용하세요. Java 버전에 관계없이 비공개 상태(예: 인스턴스 변수) 또는 사용자 정의 초기화(예: 생성자)가 필요한 경우 추상 클래스를 사용하세요.
인터페이스:
다음과 같은 인터페이스가 있다고 가정해 보세요:
으아악그리고 동물을 구현하는 여러 클래스:
으아악이제 인터페이스를 반환 유형으로 사용할 수 있으므로 메서드가 cat
或 dog
을 반환할 수 있습니다.
추상 수업:
추상 클래스가 있다고 가정해 보겠습니다.
으아악이제 이를 확장하는 모든 클래스는 getname
메서드를 구현해야 합니다.
위의 두 클래스 모두 필수 getname
方法,但它们也可以访问父类 makenoise
메서드를 구현하지만 부모 클래스 makenoise
메서드에 액세스할 수도 있으며 필요한 경우 재정의할 수도 있습니다.
다른 차이점도 알아두는 것이 중요합니다.
- 추상 클래스는 하나만 확장할 수 있지만 여러 개를 구현할 수도 있습니다. 상호 작용.
- 인터페이스는 서로 다른 유형이 동일한 메소드 시그니처를 가져야 할 때 사용해야 하고, 구현이 공통 동작을 공유할 때 추상 클래스를 사용해야 합니다.
- 상호 배타적이지 않습니다.
- 인터페이스는 공개 메소드만 가질 수 있는 반면 추상 클래스는 공개 메소드와 보호 메소드를 가질 수 있습니다.
위 내용은 언제 추상화를 사용하고 언제 인터페이스를 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6
시각적 웹 개발 도구
