[Java]Javaベース(6)
12732 ワード
[Java]Javaベース(6)
1.Java継承
1-1. 継承とは.
継承とは、既存のクラスを再使用して新しいクラスを作成することです.
Javaでは、親クラスの変数/メソッドを子クラスから継承して使用可能にします.
このうち、親はsuperclass、子はsubclassと呼ばれます.
継承はYes 実行結果
I am parent
I am child
I ingerited from parent
1-2. Java継承フィーチャーjavaは単一の継承のみをサポートします.つまり、多重継承はサポートされていません.
したがって、 Javaは継承回数を制限しない. javaではトップクラスがObjectクラスです.
Objectクラスにsuperclassがない場合のみ、Java内のすべてのクラスはObjectクラスのサブクラスと見なすことができます.
(C++トップクラスはありません.) 2.スーパーキー
親クラスのメンバー変数またはメソッドにもアクセスできます.親クラスのメンバー変数またはメソッドを使用するには、thisとsuperの違い -this-
this();//自分の作成者を呼び出す
this(パラメータ);//自分の作成者を呼び出す(パラメータ)
this.変数名//自分の変数を呼び出す
this.メソッド名();//自分のやり方を呼び出す
-super-
super();//親(親)の作成者を呼び出す
super(パラメータ);呼び出し//親(親)の作成者(パラメータ)
super.変数名呼び出し//親(親)の変数
super.メソッド名();//親(親)を呼び出す方法
3.メソッドオーバーフロー
メソッドオーバーライドは、継承に基づいて、メソッド上書き条件 継承されたスーパークラスは、同じメソッド名、パラメータ、および戻りタイプを持つ必要があります. アクセス指定子は、同じ範囲以上でなければなりません. 親メソッドで指定した例外よりも多くの例外を宣言できません.親メソッドで指定した例外は使用できません. 4.動的方法の派遣
動的メソッド・ディスパッチは、実行時に割り当てられたオブジェクトのタイプを表示し、メソッドを実行することを意味するJavaのテクニックです.
参照タイプが親タイプであっても発生するため、実行時に多形性を満たすことができます.Yes 実行結果
Animals can move
Dogs can walk and run
デュアルディスパッチ
2列位とは、2回のダイナミックな配置を行うことです.
5.抽象クラス
抽象クラスは、
抽象クラス自体はインスタンス化できませんが、サブクラスタ化できます.
抽象メソッドは次のように宣言できます.特殊な点ではなく、セミコロン(
インタフェースに
6.finalキーワード
Javaでは、
変数については、読み取り専用と考えられます.
メソッドでは、これはあまり使用できないことを意味します.特に、ジェネレータで呼び出される方法は、
クラスで宣言された
7.対象クラス
例外が発生した場合はコピーできません.
簡単に言えば、
既定のシェイプは
ちなみに,内部実装は
このメソッドを上書きすることで、ピア比較基準を確立できます.このメソッドを上書きする場合は、以下に説明する
実行するかどうか分からないため、キーコードをここに置くことはできません.
反射を使用する場合、よく使用されます.
2つのオブジェクトが同じである場合、ハッシュコードも同じでなければならないので、
デフォルトでは、プログラマは、オブジェクトがこのメソッドの上書きによって有用な情報を返すことを定義する必要があります.これらの情報はほとんど意味がないからです. さらに、
1.Java継承
1-1. 継承とは.
継承とは、既存のクラスを再使用して新しいクラスを作成することです.
Javaでは、親クラスの変数/メソッドを子クラスから継承して使用可能にします.
このうち、親はsuperclass、子はsubclassと呼ばれます.
継承は
extends
キーワードを使用し、継承の形式は以下の通りである.자식클래스 extends 부모클래스
public class ParentClass {
String parent = "parent";
public void Parent() {
System.out.println("I am" + parent);
}
}
public class ChildClass extends ParentClass{
String child = "child";
public void Child() {
Parent();
System.out.println("I am" + child);
System.out.println("I inherited from" + parent);
}
}
public class Main {
public static void main(String[] args) {
ChildClass childClass = new ChildClass();
childClass.Child();
}
}
I am parent
I am child
I ingerited from parent
したがって、
extends
キーワードの後ろには親が1つしかありませんObjectクラスにsuperclassがない場合のみ、Java内のすべてのクラスはObjectクラスのサブクラスと見なすことができます.
(C++トップクラスはありません.)
super
キーワードは親を呼び出すジェネレータのキーワードであり、Super();
がなくても親のデフォルトジェネレータが自動的に呼び出されます.親クラスのメンバー変数またはメソッドにもアクセスできます.親クラスのメンバー変数またはメソッドを使用するには、
super.변수명
またはsuper.메소드명()
にアクセスします.this();//自分の作成者を呼び出す
this(パラメータ);//自分の作成者を呼び出す(パラメータ)
this.変数名//自分の変数を呼び出す
this.メソッド名();//自分のやり方を呼び出す
-super-
super();//親(親)の作成者を呼び出す
super(パラメータ);呼び出し//親(親)の作成者(パラメータ)
super.変数名呼び出し//親(親)の変数
super.メソッド名();//親(親)を呼び出す方法
3.メソッドオーバーフロー
メソッドオーバーライドは、継承に基づいて、
super
キーワード継承の機能から特定の機能を再定義する技術である.動的メソッド・ディスパッチは、実行時に割り当てられたオブジェクトのタイプを表示し、メソッドを実行することを意味するJavaのテクニックです.
参照タイプが親タイプであっても発生するため、実行時に多形性を満たすことができます.
public class Animal {
public void move() {
System.out.println("Animals can move");
}
}
public class Dog extends Animal {
@Override
public void move() {
System.out.println("Dogs can walk and run");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Animal(); // Animal 참조, Animal 객체
Animal b = new Dog(); // Animal 참조, Dog 객체
a.move(); // Animal 클래스에 정의된 메소드 실행
b.move(); // Dog 클래스에 정의된 메소드 실행됨(다이나믹 메소드 디스패치)
}
}
Animals can move
Dogs can walk and run
2列位とは、2回のダイナミックな配置を行うことです.
5.抽象クラス
抽象クラスは、
abstract
キーワードが追加されたクラスです.このクラスには抽象的なメソッドが含まれていてもよいし、含まれていなくてもよい.抽象クラス自体はインスタンス化できませんが、サブクラスタ化できます.
抽象メソッドは次のように宣言できます.特殊な点ではなく、セミコロン(
{}
)で代用するのが特徴です.abstract void moveTo(double deltaX. double deltaY);
クラスに抽象メソッドが含まれている場合は、クラスは抽象クラスでなければなりません.public abstract class GraphicObject {
abstract void draw();
}
抽象クラスがパケット化されると、サブクラスは通常、親クラスの抽象メソッドを実装することによって提供される.しかしそうでなければ抽象クラスとも考えられる.インタフェースに
;
キーワードが使用されない理由は、abstract
およびdefault
を除いて、すべての方法がstatic
キーワードを暗黙的に含んでいるためであることに注意してください.そのため使用できますが、貼り付けません.6.finalキーワード
Javaでは、
abstract
キーワードには変更できない意味があります.変数については、読み取り専用と考えられます.
メソッドでは、これはあまり使用できないことを意味します.特に、ジェネレータで呼び出される方法は、
final
と宣言することが望ましい.誇張で動きを変えることができるからだ.(意外と影響を受けるかもしれません.)クラスで宣言された
final
キーワードはサブ通信できません.つまり、拡張を阻止する.7.対象クラス
final
クラスはJavaで非常に有意義なクラスです.すべてのレベルの直、間接スーパーレベル、Object
packageに存在します.java.lang
クラスは、パラメータを持たないジェネレータを有する.Object
クラス継承の方法は次のとおりです.Object
:オブジェクトのコピーを作成して返す方法例外が発生した場合はコピーできません.
簡単に言えば、
protected Object clone() throws CloneNotSupportedException
インタフェースを実装することによって使用することができる.既定のシェイプは
Cloneable
メソッドでは決定できませんnative
:他の邸宅と比較して、他の邸宅がこの対象と同一か否かを示す同等の比較を実行する.ちなみに,内部実装は
public boolean equals(Object obj)
同一性比較であり,上書きしなければ基本的な「ㅓㅓ同一性比較」を実行する.このメソッドを上書きすることで、ピア比較基準を確立できます.このメソッドを上書きする場合は、以下に説明する
==
メソッドを上書きする必要があります.hashCode()
:オブジェクトへの参照が不要なコレクタでない場合、このメソッドが呼び出されます.実行するかどうか分からないため、キーコードをここに置くことはできません.
protected void finalize() throws Throwable
:オブジェクトのランタイムクラスを呼び出します.反射を使用する場合、よく使用されます.
public final Class getClass()
:オブジェクトのハッシュ・コード値を返します.2つのオブジェクトが同じである場合、ハッシュコードも同じでなければならないので、
public int hashCode()
を上書きする場合、equals()
も上書きしなければならない.hashCode()
:オブジェクトの文字列形式を返します.デフォルトでは、プログラマは、オブジェクトがこのメソッドの上書きによって有用な情報を返すことを定義する必要があります.これらの情報はほとんど意味がないからです.
public String toString()
と宣言されたfinal
、notify()
およびnotifyAll()
メソッドは、独立して実行されるスレッド間の同期に使用することができる.Reference
この問題について([Java]Javaベース(6)), 我々は、より多くの情報をここで見つけました https://velog.io/@minide/Java-자바-기초6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol