黑马程序员技术交流社区
标题:
大家来给我看看这个super();是什么意思啊
[打印本页]
作者:
g552092947
时间:
2015-7-1 18:37
标题:
大家来给我看看这个super();是什么意思啊
本帖最后由 g552092947 于 2015-7-1 18:39 编辑
package com.itheima;
public class People {
/**
* @param args
* 第能以一个People类包含属性姓名,年龄
*/
private String name;
private int age;
//定义一个无参的构造函数
public People() {
// TODO Auto-generated constructor stub
super();
System.out.println("我是无参构造函数");
}
//定义一个含参的构造函数
public People(String name,int age)
{
super();
this.name=name;
this.age=age;
System.out.println("我是有参构造函数");
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建无参对象
People p=new People();
System.out.println("---------------------------");
//创建有参对象
People p1=new People("张三",22);
}
}
复制代码
如题,当调用有参的构造函数的时候,会加载super();这一句,然后调用无参构造函数,无参函数中的super();不就是在调用自己吗?最后不该输出
我是无参构造函数
---------------------------
我是无参构造函数
我是有参构造函数
我的名字是张三,我的年龄是22
为什么会是
我是无参构造函数
---------------------------
我是有参构造函数
我的名字是张三,我的年龄是22
作者:
g552092947
时间:
2015-7-1 18:53
尼玛…………看花眼了 这里的super没有用,super是继承父类的,这里没有继承,真是2
作者:
vilion
时间:
2015-7-1 21:13
要有一颗会发现的心
作者:
等你的季节-夏天
时间:
2015-7-1 21:29
天空飘来5个字
作者:
kime
时间:
2015-7-1 21:33
其实People类的父类是Object类,所以super()调用的是Object的构造函数,楼主完全可以把两个super()删掉,因为在实例People对象的时候系统会默认调用的。
作者:
赵文斌
时间:
2015-7-1 21:51
People p=new People(); 这句话将调用父类中的无参构造函数
作者:
赵文斌
时间:
2015-7-1 21:52
People p1=new People("张三",22); 这将调用父类中的带参构造函数
作者:
GiveUp
时间:
2015-7-1 23:52
看不清,眼已瞎
作者:
qxc1281
时间:
2015-7-2 09:01
调用父类的无参构造函数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2