子类实例化,父类构造器中被调用被子类重写的方法,会执行父类还是子类的呢?

public class Test001 {

public static void main(String[] args) {
new Child();
}

}
class Father{
private String name = "f";
public Father(){
tell();
}
public void tell(){
System.out.println("father "+this.name);
}
}
class Child extends Father{
private String name = "c";
public Child(){
tell();
}
public void tell(){
System.out.println("child "+name);
}
}

child null
child c

说明子类实例化,先实例化父类对象,即先将父类变量初始化,然后调用父类构造函数,不过此时如果父类构造器调用的被子类重写的方法,则调用的是子类的方法。此时的name也是子类的name,因为此时子类变量尚未实例化,所以值为null;

时间: 2024-08-28 06:58:21

子类实例化,父类构造器中被调用被子类重写的方法,会执行父类还是子类的呢?的相关文章

编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数。定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类。Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分;School 中计算平均分的方法是所有科目的分数之和除以总科目数。 要求:定义ComputerAv

题目: 编写一个ComputerAverage抽象类,类中有一个抽象方法求平均分average,可以有参数. 定义 Gymnastics 类和 School 类,它们都是 ComputerAverage 的子类. Gymnastics 类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分: School 中计算平均分的方法是所有科目的分数之和除以总科目数. 要求:定义ComputerAverage的对象为上转型对象,并调用重写的方法averge. 题目用到:1.方法的多态

Magento中,调用静态块的几种方法[magento 二次开发]

在后台创建一个order_form静态块 Block Title :Order Form Identifier :order_form Status :Enabled Content :自定义内容 1.如果要在.phtml文件中直接调用这个静态块,那可以采用以下方法 [php] view plaincopy <?php $block = Mage::getModel('cms/block') ->setStoreId(Mage::app()->getStore()->getId()

子窗体中如何调用父窗体里的方法

有两个窗体,一个子窗体,一个父窗体,当点击父窗体中的按钮,弹出子窗体,在子窗体中添加完数据,单击确定按钮后,数据在父窗体的数据显示控件中立即显示,实现其实很简单,同时方法也很多,我是利用了一种最简单的方法. 子窗体SubForm:protected void btnOk_Click(object sender,EventArgs arg){   //插入数据的代码   if(插入数据成功)      this.DialogResult=DialogResult.Ok;} 父窗体:protecte

Magento中,调用静态块的几种方法

在后台创建一个order_form静态块Block Title :Order FormIdentifier :order_formStatus :EnabledContent :自定义内容 1.如果要在.phtml文件中直接调用这个静态块,那可以采用以下方法 [php] view plaincopy <?php $block = Mage::getModel('cms/block') ->setStoreId(Mage::app()->getStore()->getId()) -&

[转]html里a标签中href调用js的几种方法

文章转自:https://blog.csdn.net/best_luxi/article/details/45062301 我们常用的在a标签中有点击事件: 1. a href=”javascript:js_method();” 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href

JDK8中Java调用Javascript脚本引擎动态定义与执行代码

import java.lang.*; import java.util.Arrays; import java.util.List; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public class ScriptEngineTest { public static void main(String[] args) throw

关于父类私有属性在子类构造函数中super调用的解释

package test; public class Car { private int carMoney; //汽车租金 private String carName; //汽车名字 private int carNumb; //汽车序列号 private int carryNum; //载货量 private int passengerNum;//载客人数 public Car(int carNumb,String carName,int carMoney,int passengerNum,

Swift中可能失败的构造器的传播(调用)和重写

import Foundation /* 可能失败构造器的传播(调用) 1.可能失败的构造器可以调用同一个类中的普通构造器 2.普通构造器不能调用同一个类中的可能失败构造器 3.结构体中, 普通构造器却可以调用同一个结构体中可能失败的构造器 可能失败构造器的重写 1.子类可以用可能失败的构造器或者普通的构造器重写父类中的可能失败的构造器 2.子类的普通构造器不能向上调用父类的可能失败的构造器 3.子类的可能失败的构造器可以调用父类的可能失败的构造器 */ class Person { var n

关于子类实例化和初始化的不解与猜想

首先来看看下面这段代码: public class Base { private int i=5; public Base(){ System.out.println("I come from "+this.getClass()+" i="+this.i); this.display(); } public int getI(){ return i; } public void display(){ System.out.println(this.i); } } p