多态理解

转载 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

相关文章推荐

深入理解Java多态

  • 2014年12月27日 18:01
  • 42KB
  • 下载

理解java多态

  • 2012年07月07日 11:29
  • 565KB
  • 下载

通过代码理解C++虚函数表和多态的实现

通过代码理解C++虚函数表和多态的实现  2010年3月16日  Jeffrey Li   没有评论 我们来看一段简单的C++程序。该程序只能在64位机器上正常运行,如果你是32位...
  • ccfxue
  • ccfxue
  • 2016年11月03日 10:13
  • 173

理解java中的多态

  • 2012年10月23日 16:32
  • 103KB
  • 下载

如何理解封装、继承和多态

封装:  封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。   封装的意义:   封装的意义在于保护或者防止代...
  • c_w_d
  • c_w_d
  • 2016年10月31日 14:36
  • 7127

java多态的理解

接触java已经很长时间了,但是一直觉得自己理解的不够深入,于是今天重新学了一下java最重要的三个特性——封装,继承,多态。 封装 下面给出两个我觉得写的很不错的博客地址 http://blo...

我理解的多态

了解多态首先要了解向上转型以及前期绑定和后期绑定。参考thinking in java 第八章 class Father { public void play(){ print("xxxx");...

理解oo:继承、多态、重写、重载、接口、抽象类

1. 继承: 从多个子类中抽象出实例变量以及方法,形成更抽象的父类,避免在子类中的代码重复,维护起来更加方便。检查是否可以使用继承技术的方法是:IS A 对于类A继承自类B,类C继承自类A,那...

java多态 我的理解

这几天在看java基础,初识多态,写写自己的理解和想法 多态 顾名思义 即 一个接口,多种实现,(实现不同的功能) java多态有两种 1 编译时多态 调用被重载的方法,编译器根据参数的不同,来静态调...

Java基础 对封装、继承、多态、抽象的理解

封装:是面向对象方法的重要原则,就是把对象的属性和行为(数据)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,就是把不想告诉或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开,别人只能用我提供...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多态理解
举报原因:
原因补充:

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