多态案例
- 例一
- . class Test1Demo {
- . public
static
void main(String[] args) { - . Fu f = new Zi();
- . //f.method(); //编译看左边,运行看右边,左边没有method方法,报错,
- . f.show();//编译看左边,运行看右边,父类有show,编译没问题,输出Zishow,如果Zi类没有show方法,则运行时发现子类没有去重写,则直接调用的是父类show输出FU show,子类把fu类show方法继承下来了
- . }
- . }
- . class Fu {
- public
void show() { - System.out.println("fu show");
- }
- }
- . class Zi extends Fu {
- . public
void show() { - . System.out.println("zi show");
- . }
- .
- . public
void method() { - . System.out.println("zi method");
- . }
- . }
- .
例2:
- . class A {
- . public
void show() { - . show2(); // 调用了show2
- . }
- . public
void show2() { - . System.out.println("我");
- . }
- . }
- . class B extends A { //子类继承了A
- . public
void show2() { - . System.out.println("爱");
- . }
- . }
- . class C extends B {
- . public
void show() { - . super.show();
- . }
- . public
void show2() { - . System.out.println("你");
- . }
- . }
- . public
class Test2DuoTai { - . public
static
void main(String[] args) { - . A a = new B();//编译看做左边,b中没有show,但是继承了A类的show方法.
- . a.show();//爱
- . //父类show方法调用show2,子类中有show2,则show2是子类的show2.就相当于把这个方法写到B类中看
- . B b = new C();//编译看做左边,b中没有show,但是继承了A类的show方法.
- .. b.show();//你
- //运行看的是右边,子类show,super.show(),调用父类show方法,调用show2,调用子类show2
- . }
- . }
时间: 2024-12-18 03:41:58