美文网首页
多态的再理解

多态的再理解

作者: 培根好吃 | 来源:发表于2018-07-31 10:22 被阅读0次

对象的多种形态

1.引用形态

父类的引用可以指向本类的对象

父类的引用可以指向子类的对象

Animal d=new Animal();

Animal d2=new Dog(); //父类变量不能引用子类的对象

但是Dog d2=new Animal();就是错的 子类变量不能引用父类的对象

2.方法多态

创建本类对象时,调用的方法为本类方法

创建子类对象时,调用的方法为子类重写的方法或者继承的方法

public class Cat extends Animal {

}

public class Initial {

public static void main(String[] args) {

Animal d=new Animal();

Animal d2=new Dog();

Animal d3=new Cat();

d.eat();

d3.watchddor();// 这是不行的 ,因为watchdoor是子类专有的方法

d3.eat();//虽然d3 cat类里面什么也没有,但是因为多态的原因 它会调用父类的方法

}

}


publicclassA{

publicStringshow(D obj){

return("A and D");

        } 



publicStringshow(A obj){

return("A and A");

        } 



    } 



publicclassBextendsA{

publicStringshow(B obj){

return("B and B");

        } 



publicStringshow(A obj){

return("B and A");

        } 

    } 



publicclassCextendsB{



    } 



publicclassDextendsB{



    } 



publicclassTest{

publicstaticvoidmain(String[] args){

A a1 =newA();

A a2 =newB();

B b =newB();

C c =newC();

D d =newD();



System.out.println("1--"+ a1.show(b));

System.out.println("2--"+ a1.show(c));

System.out.println("3--"+ a1.show(d));

System.out.println("4--"+ a2.show(b));//4--B and A .首先a2是A引用,B实例,调用show(B b)方法,此方法在父类A中没有定义,所以B中方法show(B b)不会调用(多态必须父类中已定义该方法),再按优先级为:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O),即先查this对象的父类,没有重头再查参数的父类。查找super.show((super)O)时,B中没有,再向上,找到A中show(A a),因此执行。

System.out.println("5--"+ a2.show(c));//同上

System.out.println("6--"+ a2.show(d));//A and D .查找B中没有show(D d)方法,再查A中,有,执行。

System.out.println("7--"+ b.show(b));

System.out.println("8--"+ b.show(c));//B and B .

System.out.println("9--"+ b.show(d));

        } 

    }


1--A and A

2--A and A

3--A and D

4--B and A

5--B and A

6--A and D

7--B and B

8--B and B

9--A and D

相关文章

  • 多态的再理解

    对象的多种形态 1.引用形态 父类的引用可以指向本类的对象 父类的引用可以指向子类的对象 Animal d=new...

  • JAVA面向对象学习(多态性)

    多态性的理解和应用 1.1. 多态性的理解 多态性:在Java中,多态性是它的一大特性,可以理解成为是事物的多种形...

  • java编程思想(一)---笔记

    《java编程思想》这本书被视为java经典,再此总结一些重点知识: 1.java多态性理解 所谓多态就是指程序中...

  • 多态的理解

    多态的概念和作用(深入理解) - 流寂 - 博客园

  • 多态的理解

    定义 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就...

  • 多态的理解

    多态就是把不同对象抽象出共性但还保留之前的属性。

  • 分享一些重要的Android面试题

    说一下JAVA多态的理解,以及接继承,和接口的理解 于哥在这里只讲多态,其他自己上网体会 对于多态的定义 不同类的...

  • 多态

    理解多态 多态,即多种形态,面向对象程序设计语言当中最核心的特征,理解多态能帮助我们更好的进行程序设计。 生活中的...

  • 金9银10,分享几个重要的Android面试题

    说一下java多态的理解,以及接继承,和接口的理解 于哥在这里只讲多态,其他自己上网体会 对于多态的定义不同类的对...

  • 多态(1)静态多态与动态多态

    多态(1)静态多态与动态多态 什么是多态 从字面上理解就是多种形态的意思。而多态一词最初源自希腊语,其含义便是“多...

网友评论

      本文标题:多态的再理解

      本文链接:https://www.haomeiwen.com/subject/ptucvftx.html