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

第四章继承与接口.ppt

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

子类通过方法的覆盖可以把父类的内部状态和对外的行为更改为自己的内部状态和对外的行为。值得注意的是,覆盖父类的方法时,不可以降低覆盖方法的访问权限。假设父类中某个方法的访问权限是protected的,那么子类中的覆盖方法可以定义为public和protected,但是不能定义为private或友好的。 成员变量隐藏与方法覆盖 【例4-4】 class Father{ int house_area=100; public void print_house_area(){ System.out.println(The area of fathers house is +house_area); } } class Son extends Father{ double house_area=120.3; public void print_house_area(){ System.out.println(The area of sons house is +house_area); } } public class HideMethodTest{ public static void main(String[] args){ Son son=new Son(); son.print_house_area(); } } 图4-3 例4-4的运行结果 成员变量隐藏与方法覆盖 如果希望类中的某些方法不能够被子类中的方法所覆盖,可以把它们声明为final。所有类的公共父类Object类就是这样做的,它的以下方法: public final Class? getClass(); public final void notify(); public final void notifyAll(); public final void wait(long timeout); public final void wait(long timeout,int nanos); public final void wait(); 成员变量隐藏与方法覆盖 除了把类中的一些方法声明为final,还可以声明整个类为final。一个被final关键字修饰的类不能够被继承,也即不能够有子类。有时候处于安全性的考虑,会将一些类声明为final。比如java.lang包中的String类。由于它涉及到字符串操作,对于JAVA编译器和JAVA解释器的正常运行有很重要的作用,不允许对它进行更改,因此它被声明为final。 成员变量隐藏与方法覆盖 4.4 super关键字 super关键字 在JAVA中,关键字super有两种用法:一种是子类方法通过使用super调用父类中被子类隐藏的成员变量和覆盖的成员方法。另一种是子类的初始化方法中使用super调用父类的初始化方法。 在一个子类中,与父类成员变量名字相同的成员变量会隐藏同名的父类成员变量,如果在子类中定义一个方法,这个方法的名字、返回类型、参数个数和类型与从父类继承下来的方法完全相同,则子类中的方法就覆盖了父类中的方法。但是父类中被隐藏的成员变量和被覆盖的成员方法仍然可以通过super关键字来访问。例如在例4-4的子类Son中,如果使用以下语句: super.house_area=120; super.print_house_area(); 就分别可以调用父类Father中被子类Son隐藏的成员变量house_area和覆盖的成员方法print_house_area()。 super关键字 【例4-5】 class Father{ int house_area=100; public void print_house_area(){ System.out.println(The area of fathers house is +house_area); } } class Son extends Father{ double house_area=120.3; public void print_house_area(){ System.out.println(The area of sons house is +house_area); super.house_area=160; super.print_house_area(); } } public class SuperTest1{ public static void main(String[] ar

文档评论(0)

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

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

1亿VIP精品文档

相关文档