网站大量收购独家精品文档,联系QQ:2885784924

java中方法的继承,覆盖.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java中方法的继承,覆盖

java中方法的继承,覆盖 首先要明确一点,子类在继承父类时,构造函数是不能被继承的。当创建子类的实例时,子类的构造函数要调用父类的构造函数,也就是说父类要先于子类构造。子类的构造函数可以通过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重写父子类相同方法名,返回值,参数类型 如果子类的实例方法和父类的实例方法具有相同的标记,子类的方法将覆盖父类的方法。但是如果子类的方法和父类的方法具有相同的标记,但是具有不同的返回值类型,编译程序将会报错。排错的方法是修改子类中这个方法的返回值类型,使它父类中相同标记的方法的返回值一样。 public class Sub extends Sup{ //子类中的这个方法父类中的方法有相同的标记, //但返回值不同,编译程序就会报错 int test(){ return 1; } } class Sup{ void test(){ // } } 排错: public class Sub extends Sup{ //子类中的方法正确覆盖了父类

您可能关注的文档

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档