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)是实现...
在这个例子中,`Animal`类定义了一个虚函数`makeSound()`,`Dog`和`Cat`类都覆盖了这个函数。我们通过`Animal`指针调用`makeSound()`,实际执行的是子类的版本,这就是动态多态。 总结起来,C++的继承使得我们可以...
最近看DELPHI高手突破,把里面多态的说明,用代码实现了一下。多态性是允许用户将父对象设置成为与一个或更多的它的子对象相等的技术,赋值之后,基类 ...代码里面没什么注释,只是一个多态的直观体现。
本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)是指同一种行为可以有不同的表现形式,或者同一个接口可以被多种类型的对象...
首先,**继承**是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于代码重用和创建分层的类结构。例如,假设有一个`Animal`类,它有`eat()`和`sleep()`方法,然后你可以...
首先,多态是指同一个方法或属性在不同子类中有不同的实现,这允许我们使用父类引用操作子类对象,从而提高了代码的灵活性和可扩展性。C#中的多态主要体现在方法重写(Override)和方法重载(Overload)上。方法重写...
在上面的例子中,我们创建了一个 Lady 对象,并将其设置为 Cat、Dog 或 Bird 对象,然后调用 Lady 对象的 enjoy 方法。这时 JVM 会根据 Lady 对象的实际类型来调用相应的 enjoy 方法,从而实现了动态绑定。 编译时...
**封装** 是面向对象编程的基础,它是指将数据和操作这些数据的方法捆绑在一起,作为一个独立的单元,称为类。在C++中,我们通过关键字`class`来定义类。类中的数据成员被称为属性或字段,而函数成员被称为方法或...
多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个方面:**编译时类型与运行时类型的不同**...
继承是面向对象编程的一个核心特性,它允许一个类(派生类)继承另一个类(基类)的特性和行为。继承可以提高代码的复用性,减少冗余代码,并使程序结构更加清晰。 ##### 3.1 继承的基本语法 继承的基本语法如下:...
在编程领域,多态性(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。在这个“VS2010 C# 多态实例”中,我们将深入探讨C#语言如何实现多态,以及如何在Visual Studio ...
C#多态演示例子 QQ:292258449
继承允许一个类(子类)从另一个类(基类)继承属性和方法,而多态则允许不同类的对象对同一消息做出不同的响应,提高了代码的灵活性和重用性。虚函数在实现多态中扮演着关键角色,它可以确保程序在运行时能够调用到...
在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...
在这个例子中,`IProduct`是一个接口,`ProductA`和`ProductB`是它的两个实现类。客户端可以通过调用`SimpleFactory.CreateProduct`方法,传入不同的字符串类型,获取相应的对象。 同时,讲堂可能还会涉及到如何...
多态是指一个接口可以有多种不同的实现方式,或者一个基类的引用可以指向其派生类的实例。在C#中,多态主要通过虚方法(virtual)、重写(override)和抽象方法(abstract)来实现。比如,`Person`类可能有一个虚...
例如,在上述例子中,`Instrument` 类是 `Wind` 类的父类,因此,一个 `Wind` 类的对象可以被当作 `Instrument` 对象使用。这种转换的关键在于,所有父类引用能够访问的成员,子类都必须拥有,这是向上转型的基础。 ...
这是关于C#封装继承多态的一个简单的例子,对于深入学习C#中封装继承多态将很有帮助!
例如,我们有这样一个简单的例子: ```cpp class Base { public: virtual void print() { cout ; } // 声明虚函数 }; class Derived : public Base { public: void print() override { cout ; } // 子类覆盖虚...
在C#中,多态性(Polymorphism)是面向对象编程的核心概念之一,它允许一个接口或基类引用调用不同的实现,从而提供更大的灵活性和代码重用。多态性分为编译时多态性和运行时多态性。 1. 编译时多态性: 编译时多态...