A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙新强 中级黑马   /  2012-7-9 15:59  /  1982 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在调用父类构造函数时,为什么必须将父类构造函数super([实参列表])放在第一行?

3 个回复

倒序浏览
这个问题 今天就问了好多个了  http://bbs.itheima.com/thread-18678-1-1.html

评分

参与人数 1黑马币 +15 收起 理由
蒋映辉 + 15 论坛达人。。。。

查看全部评分

回复 使用道具 举报
如果super的语句不是第一句,那么super语句会被它们前面的初始化动作覆盖掉
回复 使用道具 举报
在继承的关系中存在着方法腐写的概念,在方法覆写时要考虑到权限,被子类覆写的方法不能比父类有更严谨的的访问权限。在java中有四中访问权限:
1、私有权限(private)
  private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
2、默认权限(default)
  类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
3、受保护权限(protected)
  protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
4、公共权限(public)
  public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

看下面这段代码:
class Father{
void prin(){
  System.out.println("我是父类") ;
}
} ;
class Son extends Father{
public void prin(){
  super.prin() ;
  System.out.println("我是子类") ;
}
};
public class ExtendsDemo{
public static void main(String  args[]){
  Son s = new Son() ;
  s.prin() ;
}
};



super 可以明确表示子类某个方法是从父类继承而来的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马