java-这段代码执行为什么结果会是null

问题描述

这段代码执行为什么结果会是null

代码:

public class Dervied extends Base {
    private String name = "dervied";
    public Dervied() {

        tellName();
        printName();
    }
    public void tellName() {
        System.out.println("Dervied tell name: " + name);
    }
    public void printName() {
        System.out.println("Dervied print name: " + name);
    }
    public static void main(String[] args){
        new Dervied();
    }
}

class Base {
    private String name = "base";
    public Base() {
        tellName();
        printName();
    }
    public void tellName() {
        System.out.println("Base tell name: " + name);
    }
    public void printName() {
        System.out.println("Base print name: " + name);
    }
}

执行结果

Dervied tell name: null
Dervied print name: null
Dervied tell name: dervied
Dervied print name: dervied

为什么会是null????

解决方案

1、首先private是不会继承到新的对象里,所以不会出现“base”。
2、由于重写的缘故,在执行super的构造函数是,还是调用的子类方法,此时成员变量未初始化。

解决方案二:

主方法中创建一个对象,此时会去调用该类构造器,该类有父类,所以会先去调用父类构造器,在构造器中调用了两个方法,其中的name是属于对象实例的属性,需要用对象调用,但此时还没有对象

解决方案三:

路上说的比较清楚了,主要看一下super相关概念以及子类构造函数与父类构造函数之间的关系。

时间: 2024-09-19 02:06:07

java-这段代码执行为什么结果会是null的相关文章

jdbc-JAVA数据库连接程序跳过某段代码执行了

问题描述 JAVA数据库连接程序跳过某段代码执行了 检查密码是否正确的Checkpasswd类 [code=java]package com.qdgxy.sql; import java.sql.SQLException; public class Checkpasswd extends SQL_connection{ private static int i =0; //select count(*) from consumer where consumer_password='1234567

链表-请教:(C语言学生信息管理)程序函数里好像直接跳过了某一段代码执行

问题描述 请教:(C语言学生信息管理)程序函数里好像直接跳过了某一段代码执行 void Student_Searchself(STUDENT *head) //此函数是为了显示学生的各科成绩和各科排名 //(head)存储学生成绩的链表头指针{STUDENT *p*m*e*y*l;STUDENT *p1*p2*p3*p4;char s[6];system(""cls"");printf(""请输入本人学号来查找n"");sca

c++-为什么这段代码执行不了,我实在找不出错误,求各位大神搭救

问题描述 为什么这段代码执行不了,我实在找不出错误,求各位大神搭救 #include using namespace std; int main() { void bubble_sort(char *name[ ],int n);//函数声明,下同 void print(char *name[ ],int n); char *dept[11]={"管理系","国际经贸系","计算机系","电子系","数码媒体系&qu

java web-这段代码看不懂啊,求解释

问题描述 这段代码看不懂啊,求解释 /s:iterator /s:iterator/sx:treenode/s:iterator </sx:treenode> </s:iterator> </sx:treenode> </s:iterator> 解决方案 <sx:tree label="%{#request.project.projectName}" id="parentId" > //项目名 <s:

这段代码执行不了?请教各位

问题描述 <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><HTML><HEAD><scriptlanguage="javascript">varhh=0;varmm=0;varss=0;functionProgressB

请问下这段代码执行什么功能

问题描述 classBase{protectedintb_data;publicvoidf(intnum1,intnum2){System.out.println(this.b_data+"Base.f()"+num1+""+num2);}publicvoidg(intnum1,intnum2){System.out.println(this.b_data+"Base.g()"+num1+""+num2);}publicBas

JS 中AJAX回调函数success内的代码执行问题,有时执行,有时不执行

问题描述 在body中<asp:ButtonID="Button1"runat="server"Text="查询"OnClientClick="javascript:returnreport();"/>在<script>中functionreport(){Ext.Ajax.request({url:"/XFStatbyDay/XFStatbyDay",success:function

大神帮我解释下下面这段代码 谢谢啦,拜托

问题描述 大神帮我解释下下面这段代码 谢谢啦,拜托 大神帮我解释下下面这段代码 谢谢啦,拜托 public String getByTrainingOrCompetitionID() throws Exception { zheJiuSheZhiList = dao.getList(TrainingOrCompetitionID); if(zheJiuSheZhiList.size()>0) { zheJiuSheZhi=zheJiuSheZhiList.get(0); } return SUC

探析浏览器执行JavaScript脚本加载与代码执行顺序_javascript技巧

本文主要基于向HTML页面引入JavaScript的几种方式,分析HTML中JavaScript脚本的执行顺序问题 1. 关于JavaScript脚本执行的阻塞性 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析.渲染以及其他资源的下载都要停下来等待脚本执行完毕①.这一点是没有争议的,并且在所有浏览器中的行为都是一致的,原因也不难理解:浏览器需要一个稳定的DOM结构,而JavaScript可能会修改DOM(改变DOM结构或修改某个