-
ポリモーフィズム:表現の1つの形式、複数の実現。
2つのタイプ:コンパイル時ポリモーフィズム、実行時ポリモーフィズム
1、コンパイル時ポリモーフィズム:メソッドのオーバーロードとして具体的に表現され
ます2.ランタイムポリモーフィズム:メソッドの書き換えとして具体的に表現され
ますランタイムポリモーフィズムの3つの前提条件:
1。)継承
2.)オーバーライド
3.)親クラスの宣言は、子クラスの参照を指します(子クラスのオブジェクトが作成されます) -
リヒター置換原則:
1。場所に親クラスオブジェクトが必要な場合、それをサブクラスオブジェクトクラスに置き換えることができます。
2.サブクラスは、親クラスの特定のメソッドをオーバーライドできません
Demo类:
public class Demo {
public void show(){
System.out.println("show()...");
}
public void show(int x){
System.out.println("show(int x)...");
}
}
父のクラス:
public class Father {
public void show(){
System.out.println("father is showing...");
}
}
Son类
public class Son extends Father{
public void show(){
System.out.println("son is showing...");
}
}
娘クラス:
public class Daughter extends Father{
public void show(){
System.out.println("daughter is showing...");
}
}
テストクラス:
public class Test {
public static void main(String[] args) {
/**
* 多态:一种表现形式,多种实现。
* 两种:编译时多态、运行时多态
* 编译时多态:具体表现为方法重载
* 运行时多态:具体表现为方法重写
* 运行时多态的三大前提条件:
* 1. 继承
* 2. 重写
* 3. 父类的声明指向子类的引用(创建的是子类的对象)
*/
// 方法重载:编译时多态
Demo demo=new Demo();
demo.show();
demo.show(10);
// 运行时多态
// 一个父类可以有多个子类, 具体调用的是哪个方法的重写,由创建的对象决定
// 父类的声明指向子类的引用
Father o=new Son();
o.show();
o=new Daughter();
o.show();
/**
* 里氏代换原则:
* 1. 当一个地方需要一个父类对象,我们可以通过子类对象类替代他。
* 2. 子类不可以重写父类的具体方法
*/
}
}
演算結果:
show()...
show(int x)...
son is showing...
daughter is showing...