Java抽象クラス(抽象クラス)


抽象クラス

  • 未完成の設計図、未完成の方法を有するクラス
  • abstract class Player{ // 추상클래스(미완성 클래스)
       abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드)
       abstract void stop(); // 추상메서드
    }
  • の他のクラスの作成を支援することを目的としています.インスタンスを作成できません.
  • Player p = new Player(); // error : 추상클래스의 인스턴스 생성 불가
    インスタンスを作成するには、
  • 継承によって抽象メソッドを完了する必要があります.
  • class AudioPlayer extends Player{
       void play(int pos){ /* 내용 생략 */} // 추상메서드를 구현
       void stop(){ /* 내용 생략 */} // 추상메서드를 구현
    }
    
    AudioPlayer ap = new AudioPlayer(); // OK

    抽象メソッド(抽象メソッド)

  • メソッドが完了していません.無実施部(方法)
  • は必須であるが、各子孫には異なる実装がある.
    abstract class Player{ // 추상클래스(미완성 클래스)
       abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드)
       abstract void stop(); // 추상메서드
    }
    
    class AudioPlayer extends Player{
       void play(int pos){ /* 내용 생략 */} // 추상메서드를 구현
       void stop(){ /* 내용 생략 */} // 추상메서드를 구현
    }
    
    abstract class AbstractPlayer extends Player{
       void play(int pos){ /* 내용 생략 */} // 추상메서드를 구현
       // 1개의 추상메서드만 구현했으므로 아직 abstract상태가 유지됨
    }

    抽象メソッドの実際の例

  • 抽象メソッド呼び出し可能(呼び出し時に宣言のみ)
  • package codechobo;
    
    public class PlayerExample {
        public static void main(String[] args) {
            AudioPlayer ap = new AudioPlayer();
            ap.play(100);
            ap.stop();
    
            System.out.println();
            Player ap2 = new AudioPlayer(); // 다형성
            ap2.play(200);
            ap2.stop();
        }
    }
    
    abstract class Player{
        boolean pause;
        int currentPos;
    
        Player(){
            pause = false;
            currentPos = 0;
        }
    
        /** 지정된 위치(pos)에서 재생을 시작하는 기능이 수행하도록 작성되어야 한다. */
        abstract void play(int pos); // 추상 메서드
    
        /** 재생을 즉시 멈추는 기능을 수행하도록 작성되어야 한다. */
        abstract void stop();
    
        void play(){ // 인스턴스 메서드
            play(currentPos); // 추상 메서드를 사용할 수 있다.
        }
    }
    
    class AudioPlayer extends Player{
        void play(int pos){
            System.out.println(pos+"위치 부터 play합니다.");
        }
        void stop(){
            System.out.println("재생을 멈춥니다.");
        }
    }
    
  • 運転結果
  • 100位からプレイ
    再生を停止します.
    200位からプレイ
    再生を停止します.

    抽象クラスの作成

  • の複数のクラスに共通する抽象クラスをすぐに作成するか、既存のクラスの共通部分を抽出することで抽象クラスを作成できます.