其实也就是两种绑定状态:动态绑定(也称后期绑定),静态绑定(也称前期绑定).
1 实例方法: 实例方法与引用所实际引用的对象绑定.(动态绑定).
2 静态方法: 静态方法与引用所实际声明的类型绑定.(静态绑定).
3 成员变量(静态或非静态): 成员变量与引用所实际声明的类型绑定.(静态绑定).
- /**
- * 多态的演示
- * @author fhd001
- */
- public class DtTest {
-
- public static void main(String[] args) {
-
- ChildClass c1 = new ChildClass();
- c1.aaa();
- c1.bbb();
- System.out.println(c1.n);
- System.out.println(c1.str);
-
- parentClass p1 = new parentClass();
- p1.aaa();
- p1.bbb();
- System.out.println(p1.n);
- System.out.println(p1.str);
-
- parentClass p2 = new ChildClass();
- p2.aaa(); //aaa()是实例方法,它与实际引用的对象绑定
- p2.bbb(); //bbb()是静态方法,它与实际声明的类型绑定
- System.out.println(p2.n); //n是变量,它与声明的类型绑定
- System.out.println(p2.str); //str变量,它与声明的类型绑定.
- }
- }
-
- // 父类
- class parentClass {
-
-
int n = 12;
-
static String str = "abc";
-
- void aaa(){
-
System.out.println("parentClass------>aaa");
- }
-
- static void bbb(){
-
System.out.println("parentClass------>bbb");
- }
- }
-
- //子类
- class ChildClass extends parentClass{
-
-
int n = 18;
-
static String str = "efg";
-
- void aaa(){
-
System.out.println("ChildClass-------->aaa");
- }
-
- static void bbb(){
-
System.out.println("ChildClass-------->bbb");
- }
- }
例子2:
import java.util.*;
class Shape {
public void draw() {
}
public void erase() {
}
}
class Circle extends Shape {
public void draw() {
System.out.println("Circle.draw()");
}
public void erase() {
System.out.println("Circle.erase()");
}
}
class Square extends Shape {
public void draw() {
System.out.println("Square.draw()");
}
public void erase() {
System.out.println("Square.erase()");
}
}
class Triangle extends Shape {
public void draw() {
System.out.println("Triangle.draw()");
}
public void erase() {
System.out.println("Triangle.erase()");
}
}
class RandomShapeGenerator {
private Random rand = new Random(47);
public Shape next() {
switch (rand.nextInt(3)) {
default:
case 0:
return new Circle();
case 1:
return new Square();
case 2:
return new Triangle();
}
}
}
public class Shapes {
private static RandomShapeGenerator gen = new RandomShapeGenerator();
public static void main(String[] args) {
Shape[] s = new Shape[9];
for (int i = 0; i < s.length; i++)
s[i] = gen.next();
for (Shape shp : s)
shp.draw();
}
}
运行结果为:
Triangle.draw()
Triangle.draw()
Square.draw()
Triangle.draw()
Square.draw()
Triangle.draw()
Square.draw()
Triangle.draw()
Circle.draw()
分享到:
相关推荐
学习-java继承和多态之接口 一个最简单的java多态例子代码
多态在Java中有着深远的影响,它提高了代码的可重用性、灵活性和可扩展性。本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)...
### Java多态经典讲解 #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态...
本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...
Java多态的实现机制 Java 多态的实现机制是面向对象程序设计中代码重用的一个重要机制。多态性是 Java 的三大属性之一,在开发中很重要的一个环节。多态性使对象能够调用正确的方法版本,从而提高代码的重用性和...
在Java中,多态主要体现在两个方面:方法重载(Overloading)和方法重写(Overriding)。方法重载是指在一个类中可以有多个同名方法,但参数列表不同;方法重写则是在子类中重新定义父类已有的非私有方法,以提供...
Java多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类Animal,子类Cat和Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = ...
在这个例子中,Soundable接口提供了多态行为,Animal和Dog类都实现了这个接口。 总之,Java中的多态性是通过动态绑定机制实现的,它使得我们可以编写更加灵活、可扩展的代码。理解多态和内存分配对于深入理解Java...
Java 编译时多态和运行时多态 Java 编译时多态和运行时多态是 Java 语言中两个重要的概念,它们都是多态性的实现方式,但它们在实现机制和应用场景上有所不同。 编译时多态 编译时多态是指在编译期根据参数列表的...
### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...
### Java多态机制详解 #### 一、引言 多态是面向对象编程的重要特性之一,它使得程序设计更加灵活且易于扩展。Java作为一种广泛使用的面向对象编程语言,其多态机制是理解Java编程的关键所在。本文将详细介绍Java...
### 深入Java核心:Java中多态的实现机制 多态性是面向对象编程中的一个重要概念,它使得程序代码具有高度的灵活性和可扩展性。本文将围绕Java中的多态实现机制展开讨论,包括多态的基本概念、实现原理以及具体的...
### Java多态的深度剖析 #### 什么是Java多态? 多态是面向对象编程的一个核心概念,它允许我们在程序设计中使用一个通用的接口来表示不同的类型或行为。具体而言,在Java中,多态指的是“父类型的引用可以指向子...
此外,Java的接口也是实现多态的一种方式。接口是一种完全抽象的类型,它只包含抽象方法和常量。一个类可以实现多个接口,从而获得多重身份,进一步增强多态性。例如,我们可以定义一个`Runnable`接口: ```java ...
在本项目"JiSuanQi.rar_java多态计算器"中,开发者利用Java的多态性来实现一个计算器,同时结合了properties属性表来处理国际化和配置文件,这为程序的可扩展性和灵活性提供了良好的基础。 首先,让我们详细了解...
在Java编程语言中,多态(Polymorphism)是面向对象设计的重要特性之一,它允许我们使用一个接口来表示多种不同的类型。通过多态,我们可以编写出更加灵活、可扩展的代码,使得程序能以统一的方式处理不同类型的对象...
标题:“Java多态精讲例题” 描述:“让你更加清晰的了解多态问题,例题讲解,运行结果截图” 在Java编程语言中,多态是面向对象编程的一个核心概念,它允许子类对象以父类类型引用的方式存在,从而实现接口的重用...
Java多态是面向对象编程的核心概念之一,它允许不同类的对象对同一消息做出响应。本文介绍了Java多态在实际应用中的体现,通过一个示例程序展示了如何使用抽象类、继承和接口等特性实现多态。 首先,文档中定义了一...
Java中的多态性是面向对象编程的一个核心特性,它允许我们设计更加灵活和可扩展的代码。...这个例子展示了如何在Java中利用多态性实现动态行为,根据用户输入创建不同类型的动物对象,并调用它们的`makeSound()`方法。
Java多态是面向对象编程中的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。在Java中,多态性主要体现在方法的重写(Override)和重载(Overload)上,以及父类引用指向子类对象的能力。本文将深入探讨...