文档章节

java解惑

沉睡的海洋
 沉睡的海洋
发布于 2017/04/13 17:08
字数 274
阅读 7
收藏 0

java解惑

  1. 子类的构造函数问题

public class Constructor { public static void main(String[] args) { new foo3(); new foo3("Aloha"); } }

class foo{
  foo(){System.out.println("foo...");}
  foo(String s){System.out.println("foo..."+s);}
}

class foo1 extends foo{
  foo1(){System.out.println("foo1...");}
  foo1(String s){System.out.println("foo1..."+s);}
}

class foo2 extends foo1{
  foo2(){System.out.println("foo2...");}
  foo2(String s){System.out.println("foo2..."+s);}
}

class foo3 extends foo2{
  foo3() {System.out.println("foo3...");}	
  foo3(String s){System.out.println("foo3..."+s);}
}
运行结果:
foo...
foo1...
foo2...
foo3...
foo...
foo1...
foo2...
foo3...Aloha
解释:

	当子类创建新对象时首先调用父类的无参构造方法。

	new foo3();构造方法调用顺序为foo()-->foo1()-->foo2()-->foo3();

	new foo3("Aloha");构造方法调用顺序为foo()-->foo1()-->foo2()-->foo3("Aloha");

	我的理解:构造方法中的隐藏了super();方法在自己的构造方法体中(即隐式调用父类无参构造方法),如下

    foo3(String s){
      super();		//显式调用
      System.out.println("foo3..."+s);
    }

	即子类构造方法默认调用父类的无参构造方法。

	Attention:

	如果显式调用父类的构造方法必须将父类构造方法放在子类构造方法句首,不能像这样:

    foo3(String s){
      System.out.println("foo3..."+s);
      super(s);		//编译将会无法通过
    }

© 著作权归作者所有

共有 人打赏支持
上一篇: Java IO小结
下一篇: Java IO小结
沉睡的海洋
粉丝 0
博文 2
码字总数 1453
作品 0
松江
程序员
私信 提问
我是一个ERP公司的实习生

我是一个ERP公司的实习生,酷爱java,也想把java学好。 可是不知为何被分配到用微软系列语言做开发的部门,虽然领导还没有让我参与项目,我也开始做起准备,学习C# 学了几天,虽然C#前面确实...

司谋客
2013/07/22
1K
19
JVM Stack内存结构是连续的吗?

在看JVM的内存结构说明时,看到这一句:The memory for a Java Virtual Machine stack does not need to be contiguous。(jvm stack内存不比是连续的) 这怎么理解?我一直以为JVM...

wegomm
2016/11/16
301
3
用MyEclipse4Spring10.6创建Maven项目pom.xml文件报错

==========下面是错误提示================== Failure to transfer org.codehaus.plexus:plexus-archiver:jar:1.2 from http://repo1.maven.org/maven2 was cached in the local repository,......

Cywiii
2015/12/16
585
1
volatile关键字的困惑

下面两个java文件编译后,inAdd()方法的字节码是一样的,听说volatile关键字的作用是将变量同步到内存,让其他线程可见,但从字节码来看没有什么区别,不管属性定义成volatile还是非volat...

kunagfode
2013/08/21
236
4
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dockerfile 镜像构建(1)

通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下: [root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 . 运行镜像: [root@iZuf61quxhnlk9m2tkx16cZ de...

Canaan_
34分钟前
1
0
Redis radix tree源码解析

Redis实现了不定长压缩前缀的radix tree,用在集群模式下存储slot对应的的所有key信息。本文将详述在Redis中如何实现radix tree。 核心数据结构 raxNode是radix tree的核心数据结构,其结构体...

阿里云云栖社区
37分钟前
7
0
vue import 传入变量

在做动态添加component的时候,传入变量就会报错,出现以下错误信息: vue-router.esm.js?fe87:1921 Error: Cannot find module '@/components/index'. at eval (eval at ./src/components ......

朝如青丝暮成雪
39分钟前
1
0
Flutter开发 Dio拦截器实现token验证过期的功能

前言: 之前分享过在Android中使用Retrofit实现token失效刷新的处理方案,现在Flutter项目也有“token验证过期”的需求,所以接下来我简单总结一下在Flutter项目中如何实现自动刷新token并重...

EmilyWu
40分钟前
7
0
final Map可以修改内容,final 常量不能修改

1.final Map 可以put元素,但是不可以重新赋值 如: final Map map = new HashMap(); map = new HashMap();//不可以 因为栈中变量map引用地址不能修改 2.final str = “aa”; str = "bb";/......

qimh
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部