• java三大特性之多态


    Java允许父类对象的变量作为子类对象的变量使用。

    eg:    Shape e = new Triangle ();

    但通过该变量只能访问父类的方法,子类特有的部分被隐藏。

    运行时确定使用父类还是子类的方法。

     eg:    e.draw();

    可能得到多种运行结果,可能是Shape类的draw () 方法,也可能是Triangle类重写的draw ()方法,具体的结果依赖于运行时刻 e 所指的对象的类型,而不是编译时刻e的类型。

    import java.util.*;
    
    //定义Shape类
    class Shape {
      void draw() {}
      void erase() {}
    }
    //定义Circle类
    class Circle extends Shape {
      void draw() {
        System.out.println("Calling Circle.draw()");
      }
      void erase() {
        System.out.println("Calling Circle.erase()");
      }
    }
    //定义Square类
    class Square extends Shape {
      void draw() {
        System.out.println("Calling Square.draw()");
      }
      void erase() {
        System.out.println("Calling Square.erase()");
      }
    }
    //定义Triangle类
    class Triangle extends Shape {
      void draw() {
        System.out.println("Calling Triangle.draw()");
      }
      void erase() {
        System.out.println("Calling Triangle.erase()");
      }
    }
    //包含main()的测试类
    public class Shapes{
      static void drawOneShape(Shape s){
          s.draw();
      }

    static void drawShapes(Shape[] ss){ for(int i = 0; i < ss.length; i++){ //ss[i].draw(); drawOneShape(ss[i]); } } public static void main(String[] args) { Random rand = new Random(); Shape[] s = new Shape[9]; for(int i = 0; i < s.length; i++){ switch(rand.nextInt(3)) { case 0: s[i] = new Circle();break; case 1: s[i] = new Square();break; case 2: s[i] = new Triangle();break; } } drawShapes(s); } }

    父类弱,子类强,指向父类的引用不能直接按子类引用,必须要强制类型转换后才能作为子类的引用使用。

    Instanceof 测试对象类型

    Shape   s = new Triangle();

    S instanceof  Triangple 结果为true

    你一定会喜欢那个因为喜欢她而发光的自己!
    个人博客:http://www.yanghelong.top
  • 相关阅读:
    Spark的精简安装步骤---陈楠心血总结
    关于Hadoop的集群环境下虚拟机采用NAT方式连不上网的解决
    size_t总结
    POJ 1852 Ants
    Digital Roots 1013
    1350. Primary Arithmetic
    Word Reversal
    POJ 2876 Cantoring Along
    逆序数的求法
    C++ 中cin
  • 原文地址:https://www.cnblogs.com/zzu-general/p/8830469.html
Copyright © 2020-2023  润新知