文档章节

子类调用父类构造器问题

猪刚烈
 猪刚烈
发布于 2014/08/16 09:31
字数 263
阅读 21
收藏 0

    今天群里有人问这个代码什么意思,为什么这个结果,我debug了一下,解释一下,当然新手可以看下,大神就可以略过了

package AbstractClassAndGeneric;


 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

 

解释:

子类调用父类构造器完成初始化,在父类里调用了tellName(); printName();这两个方法。但这两个方法被子类重写了,但是输出子类成员变量name的值

但name在子类的值还是null,并未赋值:dervied,所以,输出了null,至于第三四个就很好说了,不用说了,这里要注意, private String name = "der-

vied"; 成员变量是在进入构造器之后才有赋值的


 

本文转载自:http://blog.csdn.net/xh199110/article/details/31053169

猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
继承中子类的构造器调用父类的构造器

构造器的作用:初始化对象的成员变量。 构造器不能被子类继承,普通方法和属性可以被子类继承。 默认情况下,子类的构造器中的第一行隐式地调用父类默认的无参构造器,以初始化父类的成员变量...

恒者
2013/12/23
2.5K
2
《疯狂java讲义2》读书笔记——面向对象的三大特性之一:继承(已更新完)

继承 java的继承具有单继承的特点,每个子类只有一个直接父类。 继承的特点 java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有时也称为基类,超类。 因...

我的夏幸运
2016/11/04
8
0
Java继承篇总结

继承: 1)概念 把多个类中相同的成员给提取出来定义到一个独立的类中。然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容。这个关系叫继承。 1.1)定义类时,通过“继承”...

任志远Ray
2017/03/30
0
0
think in java第八章多态 总结随笔

多态:基于继承的向上转型功能,允许同一种类型同一行为有不同的表现。 多态的优点:多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序—即无论在项目最初创建时还是在需要添...

The_flying_pig
2017/06/20
0
0
Java基础——面对对象-继承

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 继承: 继承就是拥有 高效率的代码复用(在原有...

凯哥学堂
2018/07/03
7
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部