基礎JAVA 16鋼-アクセス制御者、抽象類、インタフェース
3129 ワード
アクセス制御者
public:アクセス制限なし-他のパッケージからアクセス可能
保護されている:同じパッケージ+継承されたクラスからアクセス可能
(サブクラスによって保護された継承オブジェクトを作成し、サブクラス内のオブジェクトとして指定して使用)
default:同じパッケージからのみアクセス可能
private:クラスのみアクセス可能
(他のパッケージから継承されている場合、defaultまたはprivateはアクセスできません.)
アクセス制御プログラムを使用する理由データ保護 不要なメンバーの非表示
Source-generate to String()をクリックします.上書き方法
Source-generate gettersとsetters():変数値を取得または設定する方法
継承されたメソッドを別のコンテンツに変更するメソッド.
TOString()メソッドをObjectというクラスに継承する:アドレスを出力するメソッド
使用方法の利点:メソッドに論理を作成できる
時間を表すクラス
抽象クラス:1つ以上の抽象メソッドを持つクラス
抽象クラスは、オブジェクトの作成時に使用できません(コンテンツなしのメソッド).
親としてのみ使用されます.(継承のために作成されたクラス)
サブクラス間では同じ方法を使用しますが、コンテンツが異なる場合は使用します.
抽象的なアプローチを継承するとメソッドが完成します->またはコンパイルエラー
(サブクラスは上書きしてメソッドを作成する必要があります)
抽象クラスの使用例)
アニマルクラスで動物が音を出す方法を作成したい場合.
宣言子のみを作成し、音を出す方法を指定した動物名のクラスに継承します.
インタフェース
インタフェース:クラスなどのデータ構造で、クラスには具体的な詳細が含まれていますが、インタフェースにはフレームワークのみが含まれています.
定数、抽象メソッドのみ使用(通常の変数とメソッドは含まれません)
定数:値を変更できない変数(固定値を保存するために作成されます).すべて大文字を使用します.
インタフェースのすべてのメンバー変数はpublic static finalコントロールを使用する必要があります.
public static final int NUM1 = 1;//ていすう
final:定数を作成する制御者で、変数の前にあり、変数の値を変更することはできません.
すべてのメンバー変数の制御者は同じなので省略できます.
int NUM2 = 2;
インタフェース内のすべての方法はpublic abstractコントロールを使用する必要があります.
public abstract void method1();
全ての方法の制御者が同じであるため省略できる.
void method2();
抽象的なクラスがあるので、親の役しか演じません.
クラスは複数のインタフェースを継承できます.
インタフェースの継承時にimplementsを使用する
抽象クラスとインタフェースの違い:抽象クラスは通常の変数と方法を持つことができます.
ಠ_ಠ
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を使用する
抽象クラスとインタフェースの違い:抽象クラスは通常の変数と方法を持つことができます.
ಠ_ಠ
Reference
この問題について(基礎JAVA 16鋼-アクセス制御者、抽象類、インタフェース), 我々は、より多くの情報をここで見つけました https://velog.io/@gksmf6699/기초JAVA-16강-접근제어자-추상클래스-인터페이스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol