对java类override的探讨

来源:互联网 发布:提高数据分析能力 编辑:程序博客网 时间:2024/05/01 04:20
package com.xiuye.note;public class TestClassOverrideMethod {public static void main(String[] args) {System.out.println("第一组:");A a = new B();a.f(new C());//其实是父方法f的参数C类a.f(new D());//其实是父方法f的参数C类 //f只是父类的方法System.out.println("第二组:");B b = new B();b.f(new C());//其实是子类重载f方法C类b.f(new  D());//其实是子类重载f方法D类System.out.println("第三组:");E e = new E();e.f(new C());//f方法C类e.f(new D());//f方法D类//采用最佳适配策略//以上充分说明子类重载了f方法即使是D是C的子类,但仍是两个不同的类//可以重载}}class A{void f(C c){c.f();}}class B extends A{void f(D d){d.f();d.g();}}class C{void f(){System.out.println("c.f");System.out.println("=========");}}class D extends C{void f(){System.out.println("d.f");System.out.println("=========");}void g(){System.out.println("d.g");System.out.println("=========");}}class E{void f(C c){System.out.println("e.f.c");System.out.println("=========");}void f(D d){System.out.println("e.f.d");System.out.println("=========");}}

运行结果:

第一组:c.f=========d.f=========第二组:c.f=========d.f=========d.g=========第三组:e.f.c=========e.f.d=========

引用:


0 0