class Parent {
public Parent() {
callMethod();
}
public void callMethod() {
System.out.println("我是父类里的方法");
}
}
class Child extends Parent{
int a;
public Child() {
/**
* 这里是我猜想---
* 编译器编译的时候在这里插入
* super();
* 因为super()只是sun用于引用本类的父类一个标志,
* 其语义应该是类似方法的调用,我们应该知道,在类里,除了static方法外,
* 其他的方法,编译器在处理的时候都会秘密加入this,this代表当前对象,
* 从而方法里的方法调用或变量 知道它自己是属于谁的。
* super属于子类,super()调用的时候是子类中调用父类中的构造,super()可以看做类似方法的东西
* 编译器会为其传入当前对象this,
* 因此Parent() {callMethod();},内传入的this是Child的对象
* 所以多态调用的是Child里的方法,
* 这样就可以解释清楚为什么打印的时
* ----我是子类里的方法0------------了
*
*由此而引发的问题是不可预料的!!!!!!!!!!!!!!!1
*你如果在父类构造函数里调用了子类里方法,
*而且在父类初始化的时候,子类不可能初始化,所以a是显示0
*可以想象,变量此时会被初始化null或者0之类的,你的程序会因此而非常糟糕,排错也不是那么轻松
*所以要注意!!!!!!!!!!!!!!!
*
*
*from sunflower 2008-9-28
*/
a=10;
}
public void callMethod() {
System.out.println("我是子类里的方法"+a);
}
}
public class Test {
public static void main(String[] args) {
new Child();
}
}
分享到:
相关推荐
C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用C#中CLR虚方法的多态调用
Java多态调用唯一性确定.pdf
Java基础精品课11-多态录屏5.多态调用演示.mp4
需要完成的任务 ...(1)主题类继承帖子类,并增加属性:主题id、版块id ...(3)帖子类的getInfo ()方法实现多态 (4)使用super关键值调用父类构造方法 2.技能训练 ...(3)会使用super关键字调用父类构造方法
一个简单的俄罗斯方块游戏,用API编写,没有使用二维表
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,...
使用抽象方法实现多态使用抽象方法实现多态
大连理工大学Java小学期华为云作业答案(前七章) 7.2_3 对输入的字符进行打印 ...利用多态性质,父类调用子类方法,定义一个移动卡、联通卡,手机类继承父类。实现动态调用,对输入手机号打印输出结果。
这个是代码, 由于整个工程太大 放不了, 所以只放了代码部分, 不需要的就没放
C++的多态是通过虚表指针来实现的。但是在构造和析构函数中调用虚函数,情况如何呢?是否还能实现多态呢?本文档从内存角度揭示了这其中的多态实现过程。
super () 方法始终指向调用类的父类 调用父类构造方法 演示:示例 3 多态性 2-1 多态性是指¡°多种形式¡± 它使用不同的实例而执行不同操作 多态包括方法重写和方法重载 多态性 2-2 方法重载 2-1 方法重载 2-2 ...
应用场合,类型转换,instanceof运算符,使用父类作为方法形参实现多态,使用父类作为返回值实现多态
调用子类的构造方法时,会先调用父类的构造方法。默认隐式调用父类无参数的构造方法 4.如果要在子类的构造方法中显式调用父类的构造方法。使用super(参数列表),但是这行代码必须是在 子类的构造方法的第一行。
在Python中,多态是一种使用对象的方式,子类重写父类的方法,调用不同的子类对象相同的父类方法可以产生不同的执行结果。 多态的优点 调用灵活,有了多态更容易写出通用的代码,以便适应需求的不断变化实现步骤。 在...
C++ 中的虚函数的作用主要是实现了多态的机制...关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技 术可以让父类的指针有“多种形态”,这是一种泛型技术。
C#多态测试C#多态测试C#多态测试C#多态测试C#多态测试
农业信息系统开发
java的编译时多态和运行时多态,保证一看就会
C#程序设计 之 俄罗斯方块 很精彩的讲解
其实呢,多态非常简单,就一句话:调用同一种方法产生了不同的结果。 具体实现方式有三种。 一、重载 重载很简单。 public string GetValue(string x) { return x; } public string GetValue(string x, string y)...