JAVA程序员0基础培训(11)方法的Override

    作者:课课家教育更新于: 2016-01-21 14:21:57

    大神带你学编程,欢迎选课

      Override, 主要是因为父类的功能无法满足需求,我们又不能直接修改父类的情况下 ,我们通过子类重写,来实现新的功能。

    JAVA程序员0基础培训(11)方法的Override_Java覆盖_Override_Java教程_课课家

      package Lession11;

      import java.util.ArrayList;

      import java.util.List;

      /**

      public class Lession11 {

      public static void main(String[] args) {

      // 单纯基类的测试

      Base b1 = new Base();

      b1.test();

      b1.test("");

      b1.test(new Object());

      System.out.println();

      // 单纯子类的测试

      Sub s1 = new Sub();

      s1.test();

      s1.test("");

      // 静态方法调用,会根据变量的类型,而不是对象的类型

      s1.test(new Object());

      // 上面的代码等同于这个

      Sub.test(new Object());

      System.out.println();

      // 基类的变量,子类的实例的测试

      Base b2 = new Sub();

      b2.test();

      b2.test("");

      // 静态方法调用,会根据变量的类型,而不是对象的类型

      b2.test(new Object());

      // 上面的代码等同于这个

      Base.test(new Object());

      }

      }

      class Base {

      public void test() {

      System.out.println("Base.test()");

      }

      public Base test(String name) {

      System.out.println("Base.test(String)");

      return this;

      }

      public final void test(int age) {

      System.out.println("final Base.test(int)");

      }

      // 静态方法属于类,不属于实例,所以不存在override问题

      public static void test(Object obj) {

      System.out.println("static Base.test(Object)");

      }

      }

      class Sub extends Base {

      // 标准的覆盖方法

      public void test() {

      System.out.println("Sub.test()");

      }

      // JDk5开始的覆盖方法

      // 允许返回类型和父类不同,但必须是其子类或者实现类

      public Sub test(String name) {

      System.out.println("Sub.test()");

      return this;

      }

      // 静态方法属于类,不属于实例,所以不存在override问题

      public static void test(Object obj) {

      System.out.println("static Sub.test(Object)");

      }

      }

课课家教育

未登录