主な特徴が継承されるサブクラスは、親クラスの機能に応じて既存の機能を拡張することができ、親クラスと同じ名前で定義することが可能であるときにプロパティまたはメソッドを定義サブクラスの属性および方法は、これを上書きする称される
メソッドのオーバーライド
場合、親クラスのメソッド、メソッドのパラメータの同じ種類と数と同じ名前のサブクラス定義、上書きが発生
効果が上書き観察しました
class A{
public void fun(){
System.out.println("A类中的方法");
}
}
class B extends A{
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
今回は、サブクラスはサブクラスは親クラスの楽しい()メソッドを継承するように、楽しい()メソッドではなかったため、
オーバーライドメソッド
class A{
public void fun(){
System.out.println("A类中的方法");
}
}
class B extends A{
public void fun(){
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
発生上書きする場合は、インスタンスサブクラスのメソッドがでオーバーライドされた呼び出し
のサブクラスを複数生成することができる、各サブクラスは、それらの方法に延びることができるクラス
オーバーライド機能解析結果
観察されたインスタンス1.そのクラスのものであり
、このメソッドは呼び出しが書かカバーされているクラスをインスタンス化するかどうかを確認するために2の前に上書きされない場合は、親クラスが呼び出され
、原則として上書き使用(パッシブ):
私たちはその親クラスを見つけた場合(このクラスには適していません)不適切なメソッド名機能が、あなたが達成するためにオーバーライドし、この概念を使用する必要がある場合には、このメソッド名を使用する必要があります
上記のコードを、オーバーライド機能を実装し、より良いオーバーライドを達成するためにされてきただけでなく、あなたは、アカウントへのアクセスの問題を考慮する必要があります。この方法は、親クラスのアクセス制御権限よりも厳しい持ってオーバーライドすることはできません
公共>デフォルト>プライベート:3で理解されているアクセス制御権限のための
例は99%、公共の使用
権をオーバーライド
class A{
void fun(){
System.out.println("A类中的方法");
}
}
class B extends A{
public void fun(){
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
誤って上書き
class A{
public void fun(){
System.out.println("A类中的方法");
}
}
class B extends A{
void fun(){
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
公共機関を使用してデフォルトの権限のサブクラスで、親クラスを使用して、より厳格なカテゴリーである
、この時点では、上書き呼び出すことはできません
疑問?プライベートステートメントを使用して、親クラスのメソッドは、サブクラスがそう、それは上書きと呼ばれる、公共の文を使用している場合は
概念的には、親クラスは、権限の小さな範囲に属する、プライベートであり、公共の権限の範囲を拡大するために属しています。オーバーライド権限の要件を満たしています。
正しいオーバーライドメソッドは、
通常、上書き動作で開始され、見ていない民間の脇に置きます
class A{
public void fun(){
print();
}
public void print(){
System.out.println("A类中的方法");
}
}
class B extends A{
public void print(){
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
プライベートな宣言の親クラスを使用します
class A{
public void fun(){
print();
}
private void print(){
System.out.println("A类中的方法");
}
}
class B extends A{
public void print(){
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
私たちは、民間のステートメントを使用することである何のサブクラスのオーバーライドプリント()メソッドを、見つからない。この場合、このメソッドは、子クラスは親クラスの要件に完全に準拠してメソッドのオーバーライドを定義した場合でも、サブクラスに表示されていません上書き起こることはできません。実際にはサブクラスに相当し、新しいアプローチが定義され
、コーティングのデフォルトの方法が噴出したクラスを呼び出すことができます書いておく必要があります。親クラスのメソッドを明示的にサブクラスによって上書き呼び出すことができますされている、あなたは「スーパーを。メソッド()」を追加することができますアクセス
class A{
public void fun(){
print();
}
public void print(){
System.out.println("A类中的方法");
}
}
class B extends A{
public void print(){
super.print();
System.out.println("B类中的方法");
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.fun();
}
}
スーパーとの違いについて。これでメソッド()。メソッド()とは?
呼び出しがあり、最初にこのクラスを呼び出すメソッド名があるかどうかを見ていきます)メソッド(。これを使用するか、または親クラスでこの方法があるかどうかを確認するために、コンパイルされていない与えられて、そこと呼ばれる
スーパーを使用して。メソッド()、明確なサブクラスのメソッド呼び出しを(サブクラスメソッドを見ていない)を表していない、直接呼び出す親クラスのメソッドの
インタビュー:過負荷にとオーバーライドの違いを教えてください?(違いのオーバーロードや上書きを教えてください?)
いいえ|違い|リロード|上書き|
- |: - :|: - :|: - :|
1 |英語| OVERRIDE | |オーバーロードがある
2 |範囲|クラスの内部で発生した| |継承関係で発生する
同じメソッド名、同じ種類と数のパラメータ| 3 |定義|同じ方法、パラメータの同じ種類と数に名前を付ける、方法は同じ値を返す|
4 |著作権|権限の制限なしに、オーバーロード|メソッドがオーバーライドされているが、親クラスのアクセス制御権限よりも厳しいを持つことができない|
オーバーロードされている使用中の復帰異なる値ができますか?
関係への過負荷が発生した場合、戻り値は異なるかもしれませんが、一貫性のあるメソッドの戻り値の型ことを確認するために試して、オーバーロードするとき、団結のプログラミングを考慮