码迷,mamicode.com
首页 > 其他好文 > 详细

有继承时的构造方法(转)

时间:2015-10-25 13:31:52      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

1.子类的构造方法中必须调用其基类的构造方法。

2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。

3.使用this(arguement_list)调用本类的其他构造方法。

4.如果使用super()调用基类的构造方法必须写在子类构造方法的第一行。

5.如果子类的构造方法中没有显示的调用基类的构造方法,那么系统自动调用基类中没有参数的构造方法。

6.如果子类的构造方法中既没有显示的调用基类的构造方法,而且基类中也没有无参数的构造方法,则编译出错。

 

 

class A {
 protected void print (String s) {
  System.out.println(s);
 }
 A () {
  print ("A()");
 }
 public void f() {
  print("A:f()");
 }
}
public class B extends A{
 B(){
  print("B()");
 }
 public void f(){
  print("B:f()");
 }
 public static void main(String[] args){
  B b = new B();
  b.f();
 }
}

 

分析程序输出结果,首先new出一个新对象b,即调用B的构造方法。由于B 是继承A类的,所以B必须继承A的构造方法,在B的构造方法中没有使用super(argument_list)调用A的构造方法,所以系统默认B 调用A中没有参数的构造方法,随即输出A()。接下来顺序执行B的构造方法,输出B()。最后程序调用b.f(),在B中f()是重写A中的f(),即将A中的f()覆盖,所以输出B:f()。

综上,输出结果为:A()

                  B()

                  B:f()

有继承时的构造方法(转)

标签:

原文地址:http://www.cnblogs.com/zgeek/p/4908513.html

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