Java三大特性之多态

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

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

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

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

  1.必需要有继承关系继承

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

  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 }

如上代码能够体现出引用

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

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

多态的目的:

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

  方便代码逻辑的编写

多态的两种表现形式:

  1.父类做为方法的参数

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

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

父类转成子类时要进行强制转换,但在强制转化前必定要先判断父类引用指向的子类对象究竟是谁,若没法肯定,在运行过程当中可能出错

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

相关文章
相关标签/搜索