抽象クラスとインタフェース
抽象クラス
しかし、抽象という言葉はあまりにも広い.
Javaでは、クラス宣言
抽象的なメソッドを持つクラスであるため、
上記の例では、抽象クラスの特徴を説明します. final、静的キーワードは で使用できます.抽象メソッド、一般メソッド を宣言できます.抽象クラスを継承するクラスは抽象メソッド を実装する必要がある.
上記の特徴は抽象クラスが必ずしも抽象的な方法だけではないことを示している.変数は に変更できません.メソッドで を巡回することができない.クラスで
ここで重要なのは,抽象クラスを継承するクラスが
抽象メソッドを実装しないとエラーが発生します.
また、抽象クラスのインスタンスを作成することはできません.
インタフェース
ただし、インタフェースには次のような特徴があります.
メンバーには定数と抽象メソッドしかありません. final、静的キーワードは で使用できます.メソッドを記述できない実施簿(抽象メソッドでなければならない) 個で実現した. abstract(インタフェースにabstractキーワードがなくても抽象的な方法) を省略できます.
これらのインタフェースを実装するために、
抽象メソッドは
両者の違いは、
逆に、継承は
抽象クラスとインタフェースを使用する理由
抽象的な方法とインタフェースを使用する理由はたくさんあります.
ここでは主観的な意見だけを書きます.設計フェーズで必要な方法を使用し、事前に宣言し、開発フェーズで集中的に実施することができる. 統一性と一貫性を維持し、メンテナンスが容易 は、エラーが発生しないように強制的に実施するために必要な方法を宣言しました.
추상클래스(Abstract Class)
はその名の通り抽象的なクラスである.しかし、抽象という言葉はあまりにも広い.
Javaでは、クラス宣言
추상메소드
が1つだけであっても、추상클래스
として宣言する必要があります.추상메소드
は메소드의 선언부만 존재하고 구현부가 없는 메소드
です[추상클래스(Abstract Class) 예시]
public class Ex{
}
abstract class AbstractClass {
final int FINAL_NUMBER = 10;
static int staticNumber = 10;
public abstract void printX();
public void display() {
System.out.println("display");
}
}
上記のコードでは、public abstract void printX();
は抽象的な方法である.抽象的なメソッドを持つクラスであるため、
abstract
キーワードを使用して추상클래스
と宣言される.上記の例では、抽象クラスの特徴を説明します.
上記の特徴は抽象クラスが必ずしも抽象的な方法だけではないことを示している.
final
の観客を初めて見るために、final
について簡単に理解してみましょう.(後でfinalに対して位置決めします)final
のキーワードを使用し、値は(定数にする)final
のキーワードを使用すると、final
キーワードが使用されている場合、クラスは継承できません.[추상클래스(Abstract Class) 구현 예시]
public class Ex extends AbstractClass{
@Override
public void printX() {
System.out.println("PrintX");
}
}
abstract class AbstractClass {
final int FINAL_NUMBER = 10;
static int staticNumber = 10;
public abstract void printX();
public void display() {
System.out.println("display");
}
}
前述したように,抽象クラスは継承によって実現される.ここで重要なのは,抽象クラスを継承するクラスが
추상클래스에 선언되어 있는 추상메소드
を実現しなければならないことである.抽象メソッドを実装しないとエラーが発生します.
また、抽象クラスのインスタンスを作成することはできません.
インタフェース
인터페이스(Interface)
の表面は추상클래스(Abstract Class)
と似ている.ただし、インタフェースには次のような特徴があります.
メンバーには
[인터페이스(interface) 예시]
public class Ex implements InterfaceEx{
public static void main(String[] args) {
}
@Override
public void printX() {
// TODO Auto-generated method stub
System.out.println("printX()");
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("display()");
}
}
interface InterfaceEx{
final int a = 10;
static int b = 20;
public void printX();
public void display();
}
上記のコードに示すように、인터페이스
は추상메소드
および상수
を含む.これらのインタフェースを実装するために、
public class Ex implements InterfaceEx
キーワード、例えばimplemets
を使用した.抽象メソッドは
extends
を用いて継承として実装され、インタフェースはimplemets
を用いて実装される.両者の違いは、
implemets
によって実現されるインターフェースが한 개의 클래스가 여러개의 인터페이스를 구현가능하다
であることである.逆に、継承は
한 개의 클래스가 한 개의 클래스만 상속가능
です.[다중 인터페이스 구현예시]
public class Ex implements InterfaceEx, InterfaceEx2{
public static void main(String[] args) {
}
@Override
public void printX() {
// TODO Auto-generated method stub
System.out.println("printX");
}
@Override
public void display() {
// TODO Auto-generated method stub
System.out.println("display");
}
@Override
public void printX2() {
// TODO Auto-generated method stub
System.out.println("printX2");
}
@Override
public void display2() {
// TODO Auto-generated method stub
System.out.println("display2");
}
}
interface InterfaceEx{
final int a = 10;
static int b = 20;
public void printX();
public void display();
}
interface InterfaceEx2 {
public void printX2();
public void display2();
}
複数のインタフェースを実現するのは非常に簡単です.public class Ex implements InterfaceEx, InterfaceEx2
に示すように、インタフェース名を,(Comma)
で区切ると後で使用できます.抽象クラスとインタフェースを使用する理由
抽象的な方法とインタフェースを使用する理由はたくさんあります.
ここでは主観的な意見だけを書きます.
Reference
この問題について(抽象クラスとインタフェース), 我々は、より多くの情報をここで見つけました https://velog.io/@ovan/Abstract-Class-and-Interfaceテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol