- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章类的重用1_新
第4章 类的重用 4.1 类的继承 4.2 Object类 4.3 终结类与终结方法 4.4 抽象类 4.5 范型(自学) 4.6 类的组合 4.7 包的应用 4.1 类的继承 继承的概念 新类从现有类中派生,称为类的继承 Java所有类都直接或间接地继承java.lang.Object类 Object位于所有类的顶部 2 继承的语法 class 子类名 [ extends 父类名 ] [ implement 接口 ] { //类体 } 注意: 1、没有extends,默认父类为Object 2、只能有一个父类,即单继承 3、子类继承父类的全部成员(??有争议!两种观点:私有成员不能被继承,私有成员能被继承) 4、类继承具有传递性 继承的语法 例 类的继承从什么地方开始? Java类的层次结构:最顶端的类是Object,它在java.lang中定义,是所有类的始祖。 父类的所有成员都可以通过继承成为子类的成员,但子类不能直接访问从父类中继承的private属性和方法。 子类继承的成员实际上是整个父系的所有成员。 所有类必须有一个父类(Object除外),即使省略了extends,子类还是有一个父类Object。 隐藏和覆盖—访问被隐藏的父类属性 super使用有三种形式 super.成员变量名:用于访问父类被隐藏的成员变量。 super.成员方法名([参数列表]):用于调用父类被覆盖的成员方法。 super([参数列表]):用于调用父类构造方法,只能出现在子类的构造方法中,并且只能是子类构造方法的第一条语句。 隐藏和覆盖——隐藏例4_4 class A1 { int x = 2; public void setx(int i){ x = i; } void printa() { System.out.println(x); } } class B1 extends A1 { int x=100; void printb() { super.x = super.x +10 ; System.out.println (super.x= + super.x + x= + x); } } 子类不能继承父类中的静态属性,但可以对父类中的静态属性进行操作。如在上面的例子中,将“int x = 2;”改为“static int x = 2;”,再编译及运行程序,会得到下面的结果 4 super.x= 14 x= 100 14 super.x= 16 x= 100 16 16 在上面的结果中,第一行及最后一行都是语句“a1.printa();”输出的结果,显然类B中的printb()方法修改的是类A中的静态属性x 隐藏和覆盖——方法覆盖 方法覆盖 如果子类不需使用从父类继承来的方法的功能,则可以声明自己的同名方法,称为方法覆盖 覆盖方法的返回类型,方法名称,参数的个数及类型必须和被覆盖的方法一摸一样 只需在方法名前面使用不同的类名或不同类的对象名即可区分覆盖方法和被覆盖方法 覆盖方法的访问权限可以比被覆盖的宽松,但是不能更为严格 隐藏和覆盖——方法覆盖的注意事项 必须覆盖的方法 派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为抽象类. 不能覆盖的方法 基类中声明为final的终结方法 基类中声明为static 的静态方法 创建子类对象时,先执行其父类的无参构造方法,再执行自己的构造方法 class SuperClass { SuperClass() { System.out.println(SuperClass constructor); }} class SuperClass{ SuperClass(String str) { System.out.println(Super with a string.); } } public class SubClass extends SuperClass{ SubClass(String str) { System.out.println(“Sub with a string.”);}} public static void main(String[] args) { SubClass sub = new SubClass(sub); }} public class Test { public static void main(String[] args){ System.out.println(Test main(
文档评论(0)