码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记119:继承中父类没有无参构造

时间:2015-07-08 20:27:57      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

 1 /*
 2     如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢?
 3         报错。
 4     如何解决呢?    
 5         A:在父类中加一个无参构造方法
 6         B:通过使用super关键字去显示的调用父类的带参构造方法
 7         C:子类通过this去调用本类的其他构造方法
 8             子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化。
 9             
10     注意事项:
11         this(...)或者super(...)必须出现在第一条语句上。
12         如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上。
13 */
14 class Father {
15     /*
16     public Father() {
17         System.out.println("Father的无参构造方法");
18     }
19     */
20     //如果没有写构造方法,默认有无参构造,这里写了带参构造,无参构造变成了带参构造
21     public Father(String name) {
22         System.out.println("Father的带参构造方法");
23     }
24 }
25 
26 class Son extends Father {
27     public Son() {
28         super("随便给");
29         System.out.println("Son的无参构造方法");
30         //super("随便给");
31     }
32     
33     public Son(String name) {
34         //super("随便给");
35         this();
36         System.out.println("Son的带参构造方法");
37     }
38 }
39 
40 class ExtendsDemo7 {
41     public static void main(String[] args) {
42         Son s = new Son();
43         System.out.println("----------------");
44         Son ss = new Son("林青霞");
45     }
46 }

 这里子类son创建对象的时候,无论它使用无参构造和带参构造,即无论使用new Son(),new Son("林青霞"),这里这些构造方法中默认第一条语句是必须隐式默认是super(),也就是父类的无参构造方法,利用父类的无参构造函数去初始化父类携带的数据,从而提供给子类Son使用。通常父类如果不写构造的话,系统默认父类为无参构造,但是如果父类写了带参构造,那么无参构造就会覆盖掉,这样父类Father()也就没有无参构造了,这样的话前面Son()创建对象时候就会出错。但是也可以显式利用super("name"),调用父类带参构造初始化

Android(java)学习笔记119:继承中父类没有无参构造

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4631091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!