`
jackle_liu
  • 浏览: 146534 次
文章分类
社区版块
存档分类
最新评论

一个简单的例子看多态

阅读更多
abstract class Glyph {
abstract void draw();
Glyph() {
System.out.println("Glyph() before draw()");
draw();
System.out.println("Glyph() after draw()");
}
}

class RoundGlyph extends Glyph {
private int radius = 1;
RoundGlyph(int r) {
radius = r;
System.out.println(
"RoundGlyph.RoundGlyph(), radius = " + radius);
}
void draw() {
System.out.println(
"RoundGlyph.draw(), radius = " + radius);
}
}
public class PolyConstructors {
public static void main(String[] args) {
new RoundGlyph(5);
}
}
这么一段简单的程序,你可知道最后的输出是什么吗?
什么?你认为很easy?那你来呀,看你是否能得出正确的答案和理出正确的头绪.
 
如果你觉得需要一些提示,那么下面的知识点会起到一定参考作用.
1:如果不在派生类的构造函数里明确调用父类的构造函数,那么编译器就会悄悄调用父类的默认构造函数.并且是最先调用.
2:如果你在构造函数里面调用了动态绑定的方法,那么它会使用那个覆写后的版本.
 
最后答案如下:
 
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
分享到:
评论

相关推荐

    多态代码实例

    在编程领域,多态(Polymorphism)是一个关键概念,尤其在面向对象编程中发挥着重要作用。多态允许我们使用一个通用的接口来处理不同类型的对象,提供了代码的灵活性和可扩展性。虚函数(Virtual Function)是实现...

    C++继承与多态例子

    在这个例子中,`Animal`类定义了一个虚函数`makeSound()`,`Dog`和`Cat`类都覆盖了这个函数。我们通过`Animal`指针调用`makeSound()`,实际执行的是子类的版本,这就是动态多态。 总结起来,C++的继承使得我们可以...

    一个多态的例子

    最近看DELPHI高手突破,把里面多态的说明,用代码实现了一下。多态性是允许用户将父对象设置成为与一个或更多的它的子对象相等的技术,赋值之后,基类 ...代码里面没什么注释,只是一个多态的直观体现。

    java 多态的含义和例子经典讲解

    本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)是指同一种行为可以有不同的表现形式,或者同一个接口可以被多种类型的对象...

    关于继承多态集合和IO的一个例子

    首先,**继承**是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于代码重用和创建分层的类结构。例如,假设有一个`Animal`类,它有`eat()`和`sleep()`方法,然后你可以...

    多态继承接口结构例子

    首先,多态是指同一个方法或属性在不同子类中有不同的实现,这允许我们使用父类引用操作子类对象,从而提高了代码的灵活性和可扩展性。C#中的多态主要体现在方法重写(Override)和方法重载(Overload)上。方法重写...

    java的编译时多态和运行时多态

    在上面的例子中,我们创建了一个 Lady 对象,并将其设置为 Cat、Dog 或 Bird 对象,然后调用 Lady 对象的 enjoy 方法。这时 JVM 会根据 Lady 对象的实际类型来调用相应的 enjoy 方法,从而实现了动态绑定。 编译时...

    c++ 的封装继承多态例子

    **封装** 是面向对象编程的基础,它是指将数据和操作这些数据的方法捆绑在一起,作为一个独立的单元,称为类。在C++中,我们通过关键字`class`来定义类。类中的数据成员被称为属性或字段,而函数成员被称为方法或...

    VS2010 C# 多态实例

    在编程领域,多态性(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。在这个“VS2010 C# 多态实例”中,我们将深入探讨C#语言如何实现多态,以及如何在Visual Studio ...

    C# 多态演示例子

    C#多态演示例子 QQ:292258449

    c++继承与多态,虚函数实例

    继承允许一个类(子类)从另一个类(基类)继承属性和方法,而多态则允许不同类的对象对同一消息做出不同的响应,提高了代码的灵活性和重用性。虚函数在实现多态中扮演着关键角色,它可以确保程序在运行时能够调用到...

    多态简单工厂

    在这个例子中,`IProduct`是一个接口,`ProductA`和`ProductB`是它的两个实现类。客户端可以通过调用`SimpleFactory.CreateProduct`方法,传入不同的字符串类型,获取相应的对象。 同时,讲堂可能还会涉及到如何...

    一个实例告诉你什么是封装继承和多态二

    多态是指一个接口可以有多种不同的实现方式,或者一个基类的引用可以指向其派生类的实例。在C#中,多态主要通过虚方法(virtual)、重写(override)和抽象方法(abstract)来实现。比如,`Person`类可能有一个虚...

    C#封装继承多态

    这是关于C#封装继承多态的一个简单的例子,对于深入学习C#中封装继承多态将很有帮助!

    多态的应用

    例如,我们有这样一个简单的例子: ```cpp class Base { public: virtual void print() { cout ; } // 声明虚函数 }; class Derived : public Base { public: void print() override { cout ; } // 子类覆盖虚...

    C#多态技术及简单例子描述

    在C#中,多态性(Polymorphism)是面向对象编程的核心概念之一,它允许一个接口或基类引用调用不同的实现,从而提供更大的灵活性和代码重用。多态性分为编译时多态性和运行时多态性。 1. 编译时多态性: 编译时多态...

    C#多态小案例代码分享~

    多态性允许我们使用一个通用的接口来处理不同类型的对象,使得代码更具灵活性和可扩展性。在这个"多态"案例中,我们可以期待看到如何在实际的代码场景中应用多态概念。 首先,我们需要理解多态的基本概念。在C#中,...

    C++经典实例——体现继承和多态

    在提供的压缩包“总实验”中,可能包含了多个C++源文件,每个文件代表一个特定的继承和多态的例子。通过分析这些实例,你可以看到如何在实践中应用这些概念,如何构建类层次结构,以及如何利用多态性提高代码的可...

    c#中应用多态的计算器

    多态允许我们使用一个接口来处理不同类型的对象,从而简化代码,提高代码的可扩展性和复用性。在这个“C#中应用多态的计算器”示例中,我们将探讨如何在计算器程序中实现这一概念。 首先,让我们理解什么是多态。...

    Java多态的实现机制

    Java 多态的实现机制是面向对象程序设计中代码重用的一个重要机制。多态性是 Java 的三大属性之一,在开发中很重要的一个环节。多态性使对象能够调用正确的方法版本,从而提高代码的重用性和灵活性。 多态性的分类 ...

Global site tag (gtag.js) - Google Analytics