调用方法时,只要方法重写了,实际当中调哪个,要看实际中new哪个对象。
好处:可扩展性达到最好。当增加东西时,不需要改原来的结构,直接加上就可以了。
多态的存在必要条件:1:要有继承,2:要有重写,3:父类引用指向子类对象。
package test;
class Animal{
private String name;
Animal(String name){this.name = name;}
public void enjoy(){
System.out.println("叫声");
}
}
class Cat extends Animal{
private String eyesColor; //自己的成员变量
Cat (String n,String c){super(n);eyesColor = c;}//构造方法
public void enjoy(){
//与父类不同,有自己独特方法,所以需要重写enjoy方法
System.out.println("猫叫声");
}
}
class Dog extends Animal{
private String furColor;
Dog (String n,String c){super(n);furColor = c;}
public void enjoy(){
System.out.println("狗叫声");
}
}
class Lady{
private String name;
//定义Animal类型,可以给程序带来最大的灵活性,(定义成父类的引用)
private Animal pet;
Lady(String name,Animal pet){//构造方法
this.name = name;
this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy();
}
}
public class Test {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
l1.myPetEnjoy();
l2.myPetEnjoy();
}
}
输出结果:
猫叫声
狗叫声
Why?
动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法“
上面例子中,根据Lady对象的成员变量pet所引用的不同的实际类型而调用相应的enjoy方法。
- 大小: 59.5 KB
分享到:
相关推荐
ObjectiveC程序设计多态动态类型和动态绑定PPT教案学习.pptx
关于继承多态及动态绑定.pdf
大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是...
网新集团仿真实训中心iPhone编程的多态、动态类型和动态绑定课程; 官网:insigmaedu.com
主要介绍了Java多态中动态绑定原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Objective-C-2.0程序设计-第9章-多态、动态类型和动态绑定PPT课件.ppt
主要给大家介绍了关于.NET Core WebApi中如何实现多态数据绑定的相关资料,文中通过示例代码介绍的非常详细,并给出来完整的实例代码,需要的朋友可以参考借鉴,下面来一起学习学习吧
本节内容包括 继承层次 多态 动态绑定 阻止继承:final类和final方法 强制类型转换 抽象类 Object:所有类的父类 equals方法 toString方法
主要介绍了浅谈Java中的重载,重写,多态,静态绑定、动态绑定,具有一定借鉴价值
多态、动态绑定;理解多态概念及其作用; 理解静态绑定与动态绑定的差异; 正确读懂多态程序; 为实现多态能正确设计合适的父类;面向对象程序设计三大特征:封装、继承、多态 (p366) 子类?子类型、父类?父类型 继承...
利用override多态原理实现对相似页面的后台代码的抽象,并实现动态GridView动态列数据绑定的Demo,基于VS2010创建,关键代码为MyApprovals.aspx、ToApprovals.aspx
Java课程的一道实验考试题。主要是关于IO(从键盘输入),继承,多态(动态绑定,静态绑定),集合(客户化排序)等内容。感觉对于理解多态和继承还是挺有作用的。
面向对象的基本特征三:多态的理解(java) * 多态:多种形态 * * 变量的引用形式: * (1)本态引用:左边的变量与右边的对象是同一种类型 ... * 用途:方法的动态绑定 * 强调:多态和属性无关,只说方法
的C++已经是个多重泛型编程语言(multiparadigm programming lauguage),一个同时支持过程形式(procedural)... C++支持多种形式的多态,从表现的形式来看,有虚函数、模板、重载等,从绑定时间来看,可以分成静态多态和
静态多态和动态多态的区别其实只是在什么时候将函数实现和函数调用关联起来,是在编译时期还是运行时期,即函数地址是早绑定还是晚绑定的。静态多态是指在编译期间就可以确定函数的调用地址,并生产代码,这就是静态...
理解父类引用指向子类对象的特性,并了解动态绑定的工作原理。 了解多态时的一些规则,如方法覆盖和类型转换等。 阅读建议: 建议读者在阅读前具备Java的基础知识,包括类、对象、方法和继承等概念。 在阅读过程中...
我看过的最深刻的关于c++动态绑定的讲解。好文奉献出来,d对C++多态性还是懵懵懂懂的最好看看。
主要介绍了详解Java多态对象的类型转换与动态绑定,是Java入门学习中的基础知识,需要的朋友可以参考下
独立和用户友好的GUI,用于使用多状态平衡绑定模型进行快速一维NMR线形仿真和分析 赵峰博士,2019年11月 版本记录 2.0-> 2.1 允许使用赫兹或弧度/秒作为拟合输入数据的频率单位。 以前仅支持rad / s。 在拟合3和4...