• Java三大特性之多态


    概念:对于同一个指令(调用同一个名称的方法),不同的方法给予不同的反应(不同的方法实现)

      例如:老师给学生上课,当老师说下课时,不同的学生有不同的反应,有的学生上厕所、有的学生喝水,但老师下发的指令只有一个

      这就是多态,同一指令,不同的事物有不同的反应

    规范(多态实现的前提):

      1.必须要有继承关系

      2.子类方法必须重写父类方法

      3.父类引用指向子类对象(同一引用类型,使用不同的实例而执行不同的操作)

     1 public class DuoTai {
     2     public static void main(String[] args) {
     3         //父类引用指向子类对象
     4         Father father = new Child();
     5         /**
     6          * 由于fun1在子类中没有方法重写,当调用fun1时只会调用父类中的fun1
     7          * 子类中重写了fun2,当执行到父类中fun1中的fun2时,就会执行子类中重写的fun2
     8          */
     9         father.fun1();//执行结果为子类中的fun2
    10     }
    11 }
    12 
    13 class Father{
    14     public void fun1(){
    15         fun2();
    16     }
    17 
    18     public void fun2(){
    19         System.out.println("父类中的fun2");
    20     }
    21 }
    22 
    23 class Child extends Father{
    24     //方法重载
    25     public void fun1(int i){
    26         System.out.println("子类中的fun1");
    27     }
    28     //方法重写
    29     public void fun2(){
    30         System.out.println("子类中的fun2");
    31     }
    32 }

    如上代码可以体现出

      当子类中没有重写父类中现有的方法时,多态调用的是父类中的方法

      当子类中重写了父类中的方法时,多态调用的是子类中的方法

    多态的目的:

      为了提高代码的扩展性和维护性

      方便代码逻辑的编写

    多态的两种表现形式:

      1.父类作为方法的参数

      2.父类作为方法的返回值类型

    引用类型的转换与基本类型的转换类似:

    父类转成子类时要进行强制转换,但在强制转化前一定要先判断父类引用指向的子类对象到底是谁,若无法确定,在运行过程中可能出错

    子类转成父类时,直接自动转换,不需要进行任何的判断

  • 相关阅读:
    系统权限控制模型
    [Golang] 剑走偏锋 -- IoComplete ports
    Golang 正则匹配 -- regexp
    golang -- 字符串就地取反
    Hyperledger Fabric chaincode 开发(疑难解答)
    could not launch process: decoding dwarf section info at offset 0x0: too short
    win10 Ubuntu16 双系统
    7-8 哈利·波特的考试
    7-7 六度空间
    7-6 列出连通集
  • 原文地址:https://www.cnblogs.com/lyc-code/p/12494806.html
Copyright © 2020-2023  润新知