黑马程序员技术交流社区
标题:
求大神讲解一个带super的代码!!!!!!!!
[打印本页]
作者:
冷锋也温柔
时间:
2014-8-9 23:36
标题:
求大神讲解一个带super的代码!!!!!!!!
class {
public l(String name) {
System.out.println("(String name)");
}
}
class extends {
public () {
super("hello"); //这里为什么用super调用的带参构造方法呢,子类的无参构造方法难道不能直接执行?????????
System.out.println("D()");
}
public D(String name) {
super(name);
System.out.println("D(String name)");
}
}
class AD {
public static void main(String[] args) {
}
}
作者:
jiangweibin2573
时间:
2014-8-9 23:58
class A{
public static String name;
/*当一个类中没有手动定义构造函数的时候,虚拟机会自动加上空参数的构造函数
* 而一旦当我们定义了自己构造函数,系统就不会在为其添加任何构造函数
* 也就是说,如果一个像A这样的类中,只有一个(一个String类型参数)构造函数
*/
public A(String name){
System.out.println("hello java");
}
}
class D extends A{
public D(){
/*子类对象在创建的时候,其构造函数首先会访问父类是如何初始化的
* 如果没有指定访问父类中那个构造函数,都有默认有隐式的super()语句
* 即访问父类中的空参数构造函数
*
* 你的问题:
* 要用父类中空构造函数时候,由于你指定了带参数的构造函数A(String name)
* 虚拟机没有再为你添加空参数构造函数A()
* 所以会报找不到A()构造函数
*/
super();
System.out.println("hello world");
}
public D(String name){
super(name);//所以这里是正确的
System.out.println("hello itcast" );
}
}
复制代码
作者:
冷锋也温柔
时间:
2014-8-10 22:44
相当详细!!!!!1谢谢啊 这么厉害 入学测试肯定可以哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2