基礎JAVA 16鋼-アクセス制御者、抽象類、インタフェース

3129 ワード

アクセス制御者
public:アクセス制限なし-他のパッケージからアクセス可能
保護されている:同じパッケージ+継承されたクラスからアクセス可能
(サブクラスによって保護された継承オブジェクトを作成し、サブクラス内のオブジェクトとして指定して使用)
default:同じパッケージからのみアクセス可能
private:クラスのみアクセス可能
(他のパッケージから継承されている場合、defaultまたはprivateはアクセスできません.)
アクセス制御プログラムを使用する理由
  • データ保護
  • 不要なメンバーの非表示
    Source-generate to String()をクリックします.上書き方法
    Source-generate gettersとsetters():変数値を取得または設定する方法
    継承されたメソッドを別のコンテンツに変更するメソッド.
    TOString()メソッドをObjectというクラスに継承する:アドレスを出力するメソッド
    使用方法の利点:メソッドに論理を作成できる
    時間を表すクラス
    public class Time {
    
    private int hour;
    private int minute;
    private int second;
    
    public int getHour() {
    	return hour;
    }
    
    public void setHour(int hour) {
    	if(hour < 0){
    		this.hour = 0;
    	}else if(hour > 23){
    		this.hour = hour % 24;
    	}else{
    		this.hour = hour;
    	}
    }
    
    public int getMinute() {
    	return minute;
    }
    
    public void setMinute(int minute) {
    	if(minute < 0){
    		this.minute = 0;
    	}else if(minute > 59){
    		this.minute = minute % 60;
    		setHour(this.hour + (minute / 60));
    	}else{
    		this.minute = minute;
    	}
    }
    
    public int getSecond() {
    	return second;
    }
    
    public void setSecond(int second) {
    	if(second < 0){
    		this.second = 0;
    	}else if(59 < second){
    		this.second = second % 60;
    		setMinute(this.minute + (second / 60));
    	}else{
    		this.second = second;
    	}
    }
    
    void clock(){
    	while (true){
    		System.out.println(toString());
    		stop();
    		setSecond(second + 1);
    	}
    }
    
    private void stop(){
    //clock을 구현하기 위해 부수적으로 만든 메서드 - 숨기는 게 나음
    	try {
    		Thread.sleep(1000);
    	} catch (InterruptedException e) {
    		e.printStackTrace();
    	} //프로그램을 잠시동안 멈추게 하는 메서드(밀리세컨단위, 1000을 입력하면 1초)
    }
    
    @Override
    public String toString() {
    	return hour + ":" + minute + ":" + second;
    }
    
    
    }
    抽象メソッド:メソッドの宣言と非実装のみ(コンテンツメソッドなし)
    抽象クラス:1つ以上の抽象メソッドを持つクラス
    抽象クラスは、オブジェクトの作成時に使用できません(コンテンツなしのメソッド).
    親としてのみ使用されます.(継承のために作成されたクラス)
    サブクラス間では同じ方法を使用しますが、コンテンツが異なる場合は使用します.
    抽象的なアプローチを継承するとメソッドが完成します->またはコンパイルエラー
    (サブクラスは上書きしてメソッドを作成する必要があります)
    抽象クラスの使用例)
    アニマルクラスで動物が音を出す方法を作成したい場合.
    宣言子のみを作成し、音を出す方法を指定した動物名のクラスに継承します.
    public abstract class Animal {
    
    //소리를 내는 메서드
    abstract void sound();
    
    }
    
    class Dog extends Animal{
    
    @Override
    void sound() {
    	System.out.println("멍멍!!");
    	
    }
    
    }
    
    class Cat extends Animal{
    
    @Override
    void sound() {
    	System.out.println("야옹");
    	
    }
    
    }
    
    class Mouse extends Animal{
    
    @Override
    void sound() {
    	System.out.println("찍찍");
    	
    }
    
    }
    強制サブクラス
    インタフェース
    インタフェース:クラスなどのデータ構造で、クラスには具体的な詳細が含まれていますが、インタフェースにはフレームワークのみが含まれています.
    定数、抽象メソッドのみ使用(通常の変数とメソッドは含まれません)
    定数:値を変更できない変数(固定値を保存するために作成されます).すべて大文字を使用します.
    インタフェースのすべてのメンバー変数はpublic static finalコントロールを使用する必要があります.
    public static final int NUM1 = 1;//ていすう
    final:定数を作成する制御者で、変数の前にあり、変数の値を変更することはできません.
    すべてのメンバー変数の制御者は同じなので省略できます.
    int NUM2 = 2;
    インタフェース内のすべての方法はpublic abstractコントロールを使用する必要があります.
    public abstract void method1();
    全ての方法の制御者が同じであるため省略できる.
    void method2();
    抽象的なクラスがあるので、親の役しか演じません.
    クラスは複数のインタフェースを継承できます.
    インタフェースの継承時にimplementsを使用する
    抽象クラスとインタフェースの違い:抽象クラスは通常の変数と方法を持つことができます.
    ಠ_ಠ