`
blueyanghualong
  • 浏览: 225363 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于一个多态案例的理解

 
阅读更多

 

package polymorphic;

 class Glyph {
   void draw(){System.out.println("Glyph.draw()");}

	public Glyph() {
		System.out.println("Glyph() before draw()");
	    draw();
		System.out.println("Glyph() after draw()");
	}
   
}
class RoundGlyph extends Glyph {
	String ff="i lovw";
    void draw(){System.out.println("RoundGlyph.draw()"+radius);
    System.out.println("ff"+ff);
    }
    private int radius=1;
	public RoundGlyph(int r) {
		radius=r;
		System.out.println("RoundGlyph.RoundGlyph,raius="+radius);
	}
}
public class PolyConstructor {
	  public static void main(String[] args) {
		new RoundGlyph(5);
	}
	}
/*output:
Glyph() before draw()
RoundGlyph.draw()0
Glyph() after draw()
RoundGlyph.RoundGlyph,raius=5
*/

 
//这个例子告诉我们初始化一个对象的步骤应该是这样的:
//1在调用父类构造器之前 对象的存储空间初始化为二进制的0
//2然后会调用基类的构造器,发现draw()方法被覆盖后,由于后期绑定的缘故,会调用子类对象本身draw()方法.
//此时方法中的radius变量还未进行初始化 所以显示为0
//3然后才会按照声明的顺序 初始化操作的成员
//4调用导出类的构造器主体

//所以我认为多态你需要注意的两个概念  第一个就是 动态绑定
//就是运行时根据对象的类型进行动态绑定 这是动态绑定的定义
//第二个需要注意的地方 就是这个构造器中有多态对象存在的案例
//所有子类对象还未进行初始化 但是 虚拟机会将对象的所有东西至少初始化为0
//为了避免这种情况发生 你可有在基类使用final或者private 避免多态出现

 

 

分享到:
评论

相关推荐

    61 多态案例二-PK小游戏.rar

    总结起来,这个“61 多态案例二-PK小游戏”是一个很好的学习资源,它将理论与实践相结合,帮助开发者深入理解C++中的多态、继承和虚函数等关键概念。通过实际编写和运行代码,可以更直观地体验到这些概念在解决实际...

    多态的练习案例

    在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种...通过学习和实践这些多态案例,初学者可以逐步掌握多态的原理和应用,提升编程能力,为今后的软件开发打下坚实基础。

    Java多态案例及源码.rar

    在这个“Java多态案例及源码.rar”压缩包中,你将找到一系列关于Java多态的实例和源代码,非常适合教师在教学时作为示例,以及学生在自我学习和巩固知识时参考。 1. **多态性定义**:多态(Polymorphism)在希腊语...

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

    案例中可能包含一个基类(如:Animal),以及几个继承自基类的子类(如:Dog、Cat)。基类中通常会定义一些公共方法,比如`MakeSound()`,在基类中它可能只是简单地打印出"动物叫声"。在子类中,`MakeSound()`方法会...

    C#课堂案例(多态)

    标题中的“C#课堂案例(多态)”暗示了我们将通过具体的实例来探讨C#中的多态性。多态性允许我们设计出更为通用的代码,使得不同类型的对象能够共享相同的接口或方法,从而实现代码的复用和扩展。 描述中提到的是...

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

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

    多态汽车租赁系统

    在IT行业中,多态性(Polymorphism)是面向对象编程的一个核心概念,尤其是在Java这样的语言中。...对于初学者来说,这是一个很好的学习案例,可以从中学习到如何在实际场景中运用面向对象设计原则和模式。

    原来多态还可以这样

    但是,"duotai"这个文件名可能暗示了博主讨论的多态性话题与某种特定的编程语言或技术有关,或者是一个特定的案例研究。如果有机会阅读到这个压缩包的内容,我们将能获得更丰富的信息,进一步探讨多态性的深度和广度...

    多态PPT文件!!!!

    在IT行业中,多态(Polymorphism)是一个核心概念,主要在面向对象编程(Object-Oriented Programming, OOP)中出现。它允许我们使用一个接口来表示多种不同的类型,从而提高了代码的灵活性、可扩展性和可重用性。在...

    da06抽象继承封装多态接口.zip

    在接口实现多态的例子中,我们可以定义一个接口,并让多个类实现它: ```dart interface Mover { void move(); } class Bird implements Mover { @override void move() { print('Flying'); } } class...

    基于C++的多态模式编写类的代码多态.docx

    在C++中,多态(Polymorphism)是面向对象编程的一个核心概念,它允许我们使用一个接口来表示多种不同的类型。多态性使得代码更加灵活,可扩展性更强,可以减少代码重复,并提高代码的复用性。在这个文档中,通过两...

    java 接口 类 继承 多态的简单实例

    接下来是**继承(Inheritance)**,它是面向对象编程的一个基石,一个类可以继承另一个类的属性和方法,从而实现代码的复用和扩展。在Java中,一个类只能直接继承一个父类,但可以通过多重继承(接口)来模拟多重...

    多态多态多态多态多态多态多态多态

    多态性是面向对象编程(OOP)中的一个核心特性,它允许子类对象可以被当作父类对象来处理,即父类的指针或引用可以指向其任何派生类的对象。通过这种方式,程序可以根据实际类型执行不同的行为,这极大地增强了代码...

    北大青鸟javaOOP多态Ch03作业全集.rar

    "北大青鸟javaOOP多态Ch03作业全集.rar"这个压缩包文件很显然是针对学习者提供的一系列关于Java多态性的练习和案例,帮助学生深入理解并掌握这一核心技能。 多态性是面向对象三大特性之一,另外两个是封装和继承。...

    java继承与多态

    下面是一个简单的例子来展示如何在Java中使用继承和多态: ```java // 定义一个基类 Person public class Person { private String name; private int age; public Person(String name, int age) { this.name ...

    多态题目解析

    ### 多态题目解析 ...综上所述,多态是面向对象编程语言中的一个重要特性,能够提高代码的灵活性和可扩展性。通过深入理解方法的重写和重载以及方法调用的规则,我们可以更好地利用多态来编写高质量的代码。

    源代码+报告-Java的继承和多态编程

    总结来说,这个实验深入地探讨了Java中的继承和多态特性,通过一个实际的工资管理系统案例,展示了如何在实际编程中应用面向对象编程的基本原则。它帮助学习者理解如何定义类、创建对象、使用继承来构建类的层次结构...

    Java-多态--学习笔记.docx

    ### 多态案例(作业) 设计一个动物类`Animal`,包含一个抽象方法`makeSound()`,然后创建`Dog`和`Cat`子类,分别重写`makeSound()`方法,表示不同的叫声。在主程序中,声明一个`Animal`类型的引用,并根据用户输入...

    Java面向对象小案例(控制台的购买披萨系统)

    这个案例对于初学者来说是一个很好的练习,通过逐步敲代码,你可以深入理解这些核心概念。 首先,让我们从封装开始。封装是面向对象编程的核心原则之一,它涉及将数据和操作这些数据的方法捆绑在一个单独的单元,即...

    基于多态的职工管理系统.rar

    综上所述,基于多态的职工管理系统结合了C++的多态特性、VS的开发环境以及面向对象的设计原则,实现了一个高效、灵活的员工信息管理工具。这样的系统不仅在实践中具有实用价值,也为学习者提供了理解OOP和C++编程的...

Global site tag (gtag.js) - Google Analytics