オブジェクト向けプロパティ(三)
3007 ワード
一、多態1.概説は同一の行為を指し、複数の異なる表現形式を有する.2.前提
3.マルチステートのフォーマット親タイプ変数名=newサブクラスオブジェクト;変数名.メソッド名()説明:親タイプ:子オブジェクトが継承する親タイプ、または実装される親インタフェースタイプを指します.マルチステート方式でメソッドを呼び出す場合は、まず親クラスにメソッドがあるかどうかを確認し、ない場合はコンパイルエラーです.ある場合は、サブクラス書き換えメソッド[Java]の純テキスト表示を実行しますか?
public abstract class Animal {
}
class Cat extends Animal {
}
class Dog extends Animal {
}
public class Test {
}
4.マルチステートのメリットは、プログラムの作成をより簡単にし、拡張性を向上させることができます.5.多態の転換多態の転換は上への転換と下への転換の2種類に分けられる.
マルチステート自体は、サブクラスタイプが親クラスタイプにアップコンバートされるプロセスであり、このプロセスはデフォルトであり、親参照がサブクラスオブジェクトを指す場合、アップコンバートされます.フォーマット:親タイプ変数名=newサブクラスタイプ()例えば、Animal a=new Cat();
親タイプから子タイプへのダウンコンバートのプロセスです.このプロセスは強制的で、アップコンバートされた子オブジェクトで、親参照を子クラス参照に変換します.強制タイプ変換のフォーマットを使用すると、ダウンコンバートになります.書式:サブクラス型変数名=(サブクラス型)親変数名;例えば、Cat c=(Cat)a;
トランスフォームの原因:マルチステート方式でメソッドを呼び出す場合は、まず親クラスにメソッドがあるかどうかを確認し、ない場合はコンパイルエラーです.すなわち,子クラス所有を呼び出すことができず,親クラスにはないメソッドである.コンパイルが間違っているのに、実行するどころか.これも多態が私たちに与えた「小さなトラブル」だ.したがって,サブクラス特有のメソッドを呼び出すには,下への転換が必要である.例:[Java]純テキスト表示?
abstract class Animal {
}
class Cat extends Animal {
}
class Dog extends Animal {
}
[Java]純テキスト表示?
public class Test {
}
6.回避タイプ変換異常変数名instanceofデータ型変数がそのデータ型に属する場合はtrueを返します.変数がデータ型に属していない場合はfalseを返します.[Java]純テキスト表示?
public class Test {
}
1) 【 】
2) 【 : , 】
3) 【 】
3.マルチステートのフォーマット親タイプ変数名=newサブクラスオブジェクト;変数名.メソッド名()説明:親タイプ:子オブジェクトが継承する親タイプ、または実装される親インタフェースタイプを指します.マルチステート方式でメソッドを呼び出す場合は、まず親クラスにメソッドがあるかどうかを確認し、ない場合はコンパイルエラーです.ある場合は、サブクラス書き換えメソッド[Java]の純テキスト表示を実行しますか?
public abstract class Animal {
public abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println(" ");
}
}
class Dog extends Animal {
public void eat() {
System.out.println(" ");
}
}
public class Test {
public static void main(String[] args) {
// ,
Animal a1 = new Cat();
// Cat eat
a1.eat();
// ,
Animal a2 = new Dog();
// Dog eat
a2.eat();
}
}
4.マルチステートのメリットは、プログラムの作成をより簡単にし、拡張性を向上させることができます.5.多態の転換多態の転換は上への転換と下への転換の2種類に分けられる.
1)
マルチステート自体は、サブクラスタイプが親クラスタイプにアップコンバートされるプロセスであり、このプロセスはデフォルトであり、親参照がサブクラスオブジェクトを指す場合、アップコンバートされます.フォーマット:親タイプ変数名=newサブクラスタイプ()例えば、Animal a=new Cat();
2)
親タイプから子タイプへのダウンコンバートのプロセスです.このプロセスは強制的で、アップコンバートされた子オブジェクトで、親参照を子クラス参照に変換します.強制タイプ変換のフォーマットを使用すると、ダウンコンバートになります.書式:サブクラス型変数名=(サブクラス型)親変数名;例えば、Cat c=(Cat)a;
トランスフォームの原因:マルチステート方式でメソッドを呼び出す場合は、まず親クラスにメソッドがあるかどうかを確認し、ない場合はコンパイルエラーです.すなわち,子クラス所有を呼び出すことができず,親クラスにはないメソッドである.コンパイルが間違っているのに、実行するどころか.これも多態が私たちに与えた「小さなトラブル」だ.したがって,サブクラス特有のメソッドを呼び出すには,下への転換が必要である.例:[Java]純テキスト表示?
abstract class Animal {
abstract void eat();
}
class Cat extends Animal {
public void eat() {
System.out.println(" ");
}
public void catchMouse() {
System.out.println(" ");
}
}
class Dog extends Animal {
public void eat() {
System.out.println(" ");
}
public void watchHouse() {
System.out.println(" ");
}
}
[Java]純テキスト表示?
public class Test {
public static void main(String[] args) {
//
Animal a = new Cat();
a.eat(); // Cat eat
//
Cat c = (Cat)a;
c.catchMouse(); // Cat catchMouse
}
}
6.回避タイプ変換異常変数名instanceofデータ型変数がそのデータ型に属する場合はtrueを返します.変数がデータ型に属していない場合はfalseを返します.[Java]純テキスト表示?
public class Test {
public static void main(String[] args) {
//
Animal a = new Cat();
a.eat(); // Cat eat
//
if (a instanceof Cat){
Cat c = (Cat)a;
c.catchMouse(); // Cat catchMouse
} else if (a instanceof Dog){
Dog d = (Dog)a;
d.watchHouse(); // Dog watchHouse
}
}
}