- 3
- 0
- 约5.09千字
- 约 6页
- 2017-02-09 发布于重庆
- 举报
java中方法的继承
ava中方法的继承,覆盖
(2011-01-17 02:13:42)转载▼
标签: 杂谈 首先要明确一点,子类在继承父类时,构造函数是不能被继承的。当创建子类的实例时,子类的构造函数要调用父类的构造函数,也就是说父类要先于子类构造。子类的构造函数可以通过super关键字显式调用父类中的构造函数。如果子类中的构造函数没有显式调用父类中的构造函数,编译器就会自动在子类的构造函数中调用父类中参数为空的构造函数。当父类中没有定义任何构造函数时,编译器就会为它指定一个参数为空的默认的构造函数;如果父类中定义了构造函数,那么编译器就不会为它指定一个参数为空的默认构造函数了。因此,如果某个类有可能成为其他类的父类,为了避免发生不必要的编译错误,最好为它编写一个参数为空的构造函数。
父类Sup中没有定义构造函数,编译程序将为它指定一个参数为空的默认构造函数。子类Sub中也没有定义构造函数,编译程序也会为它指定一个参数为空的默认的构造函数,并且会在这个默认的构造函数中调用父类的参数为空的构造函数。
public class Sub extends Sup{ //子类中没有定义构造函数 public static void main(String args[]){ Sub sub=new Sub(); }}
class Sup{ //父类中没有定义构造函数}
父类Sup中没有定义构造函数,编译程序将为它指定一个参数为空的默认构造函数。子类定义了一个带整型参数的构造函数,在这个构造函数中子类没有显式调用父类的构造函数,所以编译器为在它里面调用父类中参数为空的构造函数。
public class Sub extends Sup{ //子类中定义类一个带整型变量参数的构造函数 public Sub(int i){ // } public static void main(String args[]){ Sub sub=new Sub(1); }}class Sup{ //父类中没有定义构造函数}
父类中定义了一个带整型参数的构造函数,因此编译器不再为它指定参数为空的默认的构造函数。子类中也定义了一个带整型参数的构造函数。编译时,编译器将试图在子类的构造函数中调用父类的参数为空的构造函数,但是父类中没有定义参数为空的构造函数,所以编译程序将会报错。排错的方法时在子类的构造函数中显示调用父类的构造函数,或者在父类中添加一个带空参数的构造函数。
public class Sub extends Sup{ //子类中定义类一个带整型变量参数的构造函数 public Sub(int i){ // } public static void main(String args[]){ Sub sub=new Sub(1); }}
class Sup{ //父类中定义了一个带整型参数的构造函数 public Sup(int i){ // }}
public class Sub extends Sup{ //子类中定义类一个带整型变量参数的构造函数 public Sub(int i){ super(i);//调用父类中的构造函数 } public static void main(String args[]){ Sub sub=new Sub(1); }}
class Sup{ //父类中定义了一个带整型参数的构造函数 public Sup(int i){ // }}
排错方法2:
public class Sub extends Sup{ //子类中定义类一个带整型变量参数的构造函数 public Sub(int i){ // } public static void main(String args[]){ Sub sub=new Sub(1); }}
class Sup{ //父类中定义了一个带整型参数的构造函数 public Sup(int i){ // } //定义一个带空参数的构造函数 public Sup(){ // }}
类方法和实例方法在继承过程中的问题:
overiding 重写 父子类 相同方法名,返回值,参数类型
如果子
原创力文档

文档评论(0)