首页 > 其他 > 详细

子父类中的构造函数

时间:2017-02-23 17:27:45      阅读:168      评论:0      收藏:0      [点我收藏+]

子父类构造函数


*在对子类的构造函数进行初始化时,对父类的构造函数也会运行
那是因为子类构造函数第一行有一条隐式的语句super();
 super():会访问父类中的空参数的构造函数,且子类中的所有构造函数默认第一行都是super();

 

public class ExtendsDemo {

    public static void main(String[] args) {
        Zi zi=new Zi();

    }

}

class Fu{
    Fu(){
        System.out.println("show fu");
    }
}

class Zi extends Fu{
    Zi(){
        //super()  隐式语句
        System.out.println("show zi");
    }
}

输出结果:

show fu
show zi

 先运行super(),运行父类的空参数构造函数,再运行子类自己的方法。

 

父类的有参构造函数不能直接被子类继承,因为super()只能直继承父类中无参的构造函数,

同时,子父类的类名不一样,就会造成在类中出现一个和类名不一样的构造函数,这不不符合构造函数的特点的。

如果一定要继承有参构造函数,则super就不能隐式了,要直接用super()直接试用父类的有参构造函数

如下:

public class ExtendsDemo {

    public static void main(String[] args) {
        Zi z = new Zi();
        Zi z1 = new Zi(3);

    }

}

class Fu {
    Fu(int x) {
        System.out.println("show fu" + x);
    }
}

class Zi extends Fu {
    Zi() {
        // super() 隐式语句
        super(3); // 调用父类对应的构造函数
        System.out.println("show zi");
    }

    Zi(int x) {
        // super()
        super(5); // 调用父类对应的构造函数
        System.out.println("zi..." + x);

    }
}

输出:

show fu3
show zi
show fu5
zi...3

 

子父类中的构造函数

原文:http://www.cnblogs.com/ibelieve618/p/6434347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!