如何理解Java多态性?通过类型转换,把一个对象当作它的基类对象对待。 从相同的基类派生出来的多个派生预览类可被当作同一个类型对待,可对这些不同的类型进行同样的处理。
这些不同派生类的对象响应同一个方法时的行为是有所差别的,这正是这些相似的类之间彼此区别的不同之处。
动态绑定
将一个方法调用和一个方法主体连接到一起称为绑定(Binding)。 根据绑定的时机不同,可将绑定分为“早期绑定”和“后期绑定”两种。 如果在程序运行之前进行绑定(由编译器和链接程序完成),称为早期绑定。 如果在程序运行期间进行绑定,称为后期绑定,后期绑定也称为“动态绑定”或“运行时绑定”。 在Java中,多态性是依靠动态绑定实现的,即Java虚拟机在运行时确定要调用哪一个同名方法。
多态的应用
由于多态性,一个父类的引用变量可以指向不同的子类对象,并且在运行时根据父类引用变量所指向对象的实际类型执行相应的子类方法。 利用多态性进行二次分发。 利用多态性设计回调方法。
多态的例子
Shape类是几个具体图形类的父类
package cn.edu.uibe.poly;
public class Shape { public void draw(){ System.out.println("Shape.draw()"); }
}
Rectangle类是Shape类的一个子类
package cn.edu.uibe.poly; public class Rectangle extends Shape { @Override public void draw() { System.out.println("画矩形"); } }
Circle类也是Shape类的子类
package cn.edu.uibe.poly; public class Circle extends Shape{ @Override public void draw() { System.out.println("画圆"); } }
Triangle类是Shape类的另外一个子类
package cn.edu.uibe.poly; public class Triangle extends Shape{ @Override public void draw() { System.out.println("画三角形"); } }
ShapeDemo类中随机生成矩形、圆、三角形,然后用Shape类型的引用调用。
package cn.edu.uibe.poly; import java.util.*; public class ShapeDemo { Random rand = new Random(); public Shape createShape(){ int c = rand.nextInt(3); Shape s = null; switch(c){ case 0: s = new Rectangle(); break; case 1: s = new Circle(); break; case 2: s = new Triangle(); break; } return s; } public static void main(String[] args) { ShapeDemo demo = new ShapeDemo(); Shape[] shapes = new Shape[10]; for(int i=0;i<shapes.length;i++){ shapes[i] = demo.createShape(); } for(int i=0;i<shapes.length;i++){ shapes[i].draw();//同样的消息,不同的响应 } } }
|
分享到:
相关推荐
1. **减少耦合**:多态性减少了不同类之间的依赖关系,使得代码更易于理解和维护。例如,我们可以定义一个通用的`Animal`接口,然后让`Dog`和`Cat`等类实现这个接口,这样处理动物的行为时,只需要与`Animal`接口...
多态--简单工厂
java多态、继承练习题,包含题目与答案,............................................................................................................
多态2-20230614-193400.cpp
02 多态案例-计算器.cpp
首先,理解Java的类加载机制对于解析多态性至关重要。当Java程序运行时,JVM会负责加载类文件。这个过程分为加载、验证、准备、解析和初始化五个阶段。在解析阶段,JVM会将符号引用转换为直接引用,这涉及到方法调用...
JAVA 多态操作----父类与子类转换问题实例分析 JAVA 多态操作中的父类与子类转换问题是 Java 编程语言中的一种重要概念。多态操作允许我们在编程中使用父类类型的引用来...来更好地理解 Java 编程语言的多态操作机制。
Java多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类Animal,子类Cat和Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = ...
Java ------ 多态作业
Java多态的讲解
《深入理解Java多态》 在Java编程语言中,多态(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装和继承。多态性是指一个接口或者类可以表现出多种形态,使得程序在运行时能够根据实际的对象类型执行...
对 Java 中多态理解 Java 中的多态是指在不同的情况下可以有不同的行为,多态是面向对象编程的一种基本特征。多态的实现是通过方法重载和方法重写来实现的。 在 Java 中,多态可以分为两种:编译时多态和运行时...
【Java面试题】谈谈对Java多态的理解
在Java中,多态分为类多态和接口多态。类多态主要体现在子类对象可以被当作父类对象来使用,这是因为子类继承了父类的特性,同时也可能扩展了自己的特性。例如,动物是父类,狗和猫是子类,那么我们可以说一个动物...
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
### C++和Java多态的区别 #### 一、概述 ...而Java的多态机制更易于理解和使用,适用于大多数企业级应用开发。理解这两种语言中多态的不同实现有助于开发者更好地利用这些特性来设计高效、可扩展的软件系统。
java 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口
多态 Polymorphism 马克-to-win java视频的详细介绍
多态 Polymorphism 马克-to-win java视频的详细的介绍