多态理解

转载 2015年07月09日 17:20:00

父类:
public class A{
public void a(){
System.out.println(“a”);
}
}
子类1:
public class A1 extends A{
public void a(){
System.out.println(“a1”);
}
}
子类2:
public class A2 extends A{
public void a(){
System.out.println(“a2”);
}
}
测试类如下:
public class Test{
public static void main(String[] args){
A a = new A();
A a1 = new A1();
A a2 = new A2();
a.a();
a1.a();
a2.a();
}
}
毫无疑问,结果如下:
a
a1
a2
为啥它能够正确地调用a()方法呢,因为多态、动态绑定。
这也就是说,当你有一个基类,比如说形状类Shape,然后其有一个方法getDesc()获得其描述。Shape的子类Circle,Triangle,各自重载其父类的getDesc()方法,Circle的getDesc()返回“我是圆形”,Triangle的getDesc()返回“我是三角形”。然后某一个类的某一个方法如下:
String test(Shape shape){
return shape.getDesc();
}
你在调用test()方法时可里往里面传的参数类型可以是Shape、Circle或Triangle,多态能够保证getDesc()方法被正确调用,这叫动态绑定,从而你不用写三个如下的方法,即test(Shape s),test(Circle c),test(Triangle t)。

从上面的代码看出,要实现多态,要有以下几个条件:存在继承(父类、子类A、子类B、子类C),以及子类A、子类B、子类C对父类方法的不同重载

然后怎么用呢?

我的理解是:引用对象用父类,实例对象可以是子类A、子类B、子类C中的任意一个,等到具体对引用对象进行操作的时候,(如此处代码中的shape.getDesc()),系统会根据实例对象,智能地执行相应子类的代码!!

来源:http://zhidao.baidu.com/link?url=p4CYCgT7YkXdUfH8mSjf75BAaEuS9silynC6Uek747knbSh5DcyIqb0hzOKdJ7Q26iBNkr52WnngLA_der8Skq

初学者是如何理解多态

摘要:北京领卓转载
  • bjlingzhuo
  • bjlingzhuo
  • 2016年04月12日 16:20
  • 1827

Java基础中的多态理解

个人对Java中多态的部分理解,多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用...
  • u013682392
  • u013682392
  • 2015年07月29日 10:45
  • 593

java中的对于多态的理解

面向对象:      类:具体的对象抽象而来,可以抽象的表示一类具有相同特征和行为的对象      对象:是由类的实例化而来,对象是类的一个实例 java中关于多态的理解 打个比方 父...
  • woshiermingerming
  • woshiermingerming
  • 2016年08月26日 08:29
  • 8056

初学者如何理解多态

多态对于程序初学者来说是一道不小的槛。与递归类似,不管是书中还是老师授课,都把其讲得神乎其神,让读者觉得一头雾水,莫名其妙。但我认为,多态实际上非常简单,学习的难点在于在接触多态之前,大脑中并没有一个...
  • jeruen
  • jeruen
  • 2016年04月07日 08:28
  • 26463

谈谈你对多态的理解

现象:一个调用语句出现多种形态。 实现多态的三个条件:1)要有继承;2)要有虚函数重写;3)要有父类指针(引用)指向子类对象。 多态的原理:动态连编,根据实际对象的类型还判断重写函数的调用。...
  • qiumei1101381170
  • qiumei1101381170
  • 2015年09月27日 23:34
  • 1206

[java面试]关于多态性的理解

运行时多态性是面向对象程序设计代码重用的一个最强大机制,Java多态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法...
  • kuaisuzhuceh
  • kuaisuzhuceh
  • 2015年07月02日 14:28
  • 1715

对封装、抽象、继承、多态的理解?(java四大特性)

封装是把过程和数据包围起来,对数据的访问只能通过自定义的接口,这个可以保护里面的数据和结构不被修改。继承是实现代码复用的重要手段,Java的继承具有单继承的特点,每一个子类只允许有一个父类。通过继承子...
  • u014316462
  • u014316462
  • 2016年07月23日 21:39
  • 2781

Java回顾篇——多态性深入理解。

是一个Java的编程人员就知道,在以后项目开发的时候,我们的多态性几乎天天用。 小编和读者今天就来深究一下多态性的一些细节。 首先我们要知道多态性的三个必要满足的条件: 1.有继承 2.有方法...
  • a907691592
  • a907691592
  • 2016年06月08日 21:57
  • 621

通过C#理解多态

很多人都知道面向对象有三个主要的特点:封装、继承和多态,老师还说这三个特性的顺序不能记错。 要先对数据和细节进行封装封装后的结果就是只提供接口,隐藏实现细节。 我看C#视频的时候楚...
  • u012354475
  • u012354475
  • 2014年11月20日 21:36
  • 984

PHP多态的理解

php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态。php理应具有这三大特性。  封装是类的构建过程,php具有;php也具有继承的特性。唯独这个多态,php体现的...
  • qq_30164225
  • qq_30164225
  • 2017年01月05日 14:23
  • 651
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多态理解
举报原因:
原因补充:

(最多只允许输入30个字)