调用方法时,只要方法重写了,实际当中调哪个,要看实际中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
分享到:
相关推荐
在Objective-C中,多态(Polymorphism)、动态类型(Dynamic Typing)和动态绑定(Dynamic Binding)是核心概念,它们是实现面向对象程序设计灵活性和可扩展性的关键。 9.1 多态(相同的名称,不同的类) 多态是指...
大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体对象的类型进行绑定,或者说是...
在iOS开发中,尤其是使用Objective-C或Swift进行iPhone编程时,多态(Polymorphism)、动态类型(Dynamic Typing)和动态绑定(Dynamic Binding)是三个核心概念,它们构成了面向对象编程的重要基石。理解并熟练运用...
总的来说,继承、多态和动态绑定是C++中实现面向对象编程的关键特性,它们使得代码更加灵活,易于扩展,同时也提供了强大的代码复用机制。通过理解这些概念及其底层实现,可以更好地设计和实现复杂的软件系统。
"Java多态中动态绑定原理解析" Java多态中动态绑定原理解析是Java面向对象程序设计中非常重要的特性,它让程序拥有更好的可读性和可扩展性。在Java中,多态是发生在继承关系中的,需要子类重写父类的方法。父类类型...
在Objective-C 2.0程序设计中,多态(Polymorphism)、动态类型(Dynamic Typing)和动态绑定(Dynamic Binding)是面向对象编程的重要概念,它们为代码提供了灵活性和可扩展性。本章主要围绕这三大主题展开,通过一...
.NET Core Web API默认支持各种基本类型的绑定,但是对于更复杂的情况,例如多态数据绑定,它可能不会自动处理。 多态数据绑定是一个在面向对象编程中常用的概念,它允许使用父类类型的变量来引用实际的对象实例,...
Java中的重载、重写、多态、静态绑定和动态绑定的知识点总结 Java 中的重载(Overload)是一种机制,允许在同一个类中定义多个具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同...
在C++编程语言中,动态绑定和静态绑定是两种关键的多态实现方式,它们对于理解和编写高效、灵活的代码至关重要。多态性允许我们通过一个共同的基类接口访问不同派生类的对象,从而提高了代码的重用性和可扩展性。 ...
本节内容包括 继承层次 多态 动态绑定 阻止继承:final类和final方法 强制类型转换 抽象类 Object:所有类的父类 equals方法 toString方法
### C++动态绑定解析 #### 一、动态绑定概述 在C++中,动态绑定是一种重要的机制,它允许程序员在运行时确定调用哪个方法版本。这种灵活性是通过虚函数来实现的,使得一个基类指针可以指向派生类的对象,并通过该...
多态和动态绑定是面向对象程序设计中的核心概念,它们在Java等面向对象语言中扮演着至关重要的角色。多态性允许我们使用一个父类类型的引用来操作子类对象,从而实现更灵活的代码设计和复用。动态绑定则是多态实现的...
在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象...虚函数通过动态绑定确保了在运行时调用正确的函数版本,从而实现多态行为。通过理解和熟练应用这些概念,你可以设计出更加灵活和强大的软件系统。
运行时多态是指在运行时根据对象的实际类型来调用相应的方法,这种机制称为动态绑定。在 Java 中,运行时多态是通过虚拟方法表(Virtual Method Table,VMT)来实现的。 在 Java 中,每个对象都有一个虚拟方法表,...
多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时...
2. 多态与性能的关系:虽然多态提供了灵活性,但动态绑定可能会带来一定的性能损失。在某些性能敏感的场景下,如何平衡多态和性能是开发者需要考虑的问题。 3. C++模板元编程中的多态:这是一种在编译时进行计算的...
利用override多态原理实现对相似页面的后台代码的抽象,并实现动态GridView动态列数据绑定的Demo,基于VS2010创建,关键代码为MyApprovals.aspx、ToApprovals.aspx
- 继承:子类继承父类的属性和方法,子类可以看作是父类的一个扩展,这样父类引用可以指向子类对象,实现动态绑定。 - 虚函数:在基类中声明为虚函数的方法,可以在派生类中被重写,使得调用时根据实际的对象类型...
多态的核心在于方法绑定,具体分为**静态绑定**和**动态绑定**。静态绑定发生在编译时,如构造函数调用和非虚方法调用。动态绑定则发生在运行时,当调用虚方法时,JVM会查找实际对象类型中的方法实现。这意味着,...