抽象クラスとインタフェース


抽象クラス추상클래스(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のキーワードを使用すると、
  • を巡回することができない.
  • クラスで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)と似ている.
    ただし、インタフェースには次のような特徴があります.
    メンバーには
  • 定数と抽象メソッドしかありません.
  • final、静的キーワードは
  • で使用できます.
  • メソッドを記述できない実施簿(抽象メソッドでなければならない)
  • 個で実現した.
  • abstract(インタフェースにabstractキーワードがなくても抽象的な方法)
  • を省略できます.[인터페이스(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)で区切ると後で使用できます.
    抽象クラスとインタフェースを使用する理由
    抽象的な方法とインタフェースを使用する理由はたくさんあります.
    ここでは主観的な意見だけを書きます.
  • 設計フェーズで必要な方法を使用し、事前に宣言し、開発フェーズで集中的に実施することができる.
  • 統一性と一貫性を維持し、メンテナンスが容易
  • は、エラーが発生しないように強制的に実施するために必要な方法を宣言しました.