黑马程序员技术交流社区

标题: 一个继承的小问题 [打印本页]

作者: 孙新强    时间: 2012-7-9 15:59
标题: 一个继承的小问题
在调用父类构造函数时,为什么必须将父类构造函数super([实参列表])放在第一行?
作者: 赵倩倩    时间: 2012-7-9 16:03
这个问题 今天就问了好多个了  http://bbs.itheima.com/thread-18678-1-1.html
作者: 郑小杰    时间: 2012-7-9 16:30
如果super的语句不是第一句,那么super语句会被它们前面的初始化动作覆盖掉
作者: 贾存双    时间: 2012-7-9 17:35
在继承的关系中存在着方法腐写的概念,在方法覆写时要考虑到权限,被子类覆写的方法不能比父类有更严谨的的访问权限。在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 可以明确表示子类某个方法是从父类继承而来的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2