zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    编译原理语法分析程序(最左推导)
    剑指offer:02
    剑指offer:01二维数组中的查找
    pthread编译选项(命令行,codeblocks)
    学习apue的pthread synchronize之condition variables
    pthreads之joinable和detach函数
    c++指针空间大小的决定因素
    2.3.1引用
    2.2.1变量定义
    扫描PDF417崩溃的原因找到:手机摄像头分辨率低
  • 原文地址:https://www.cnblogs.com/zzu-general/p/8830469.html
Copyright © 2011-2022 走看看