20175318 2018-2019-2 《Java程序设计》第4周学习总结

2020-12-08 13:30

阅读:691

标签:多态   相同   否则   通过命令   com   ret   重写   img   没有   

教材学习总结

第五章 子类与继承

  • 每个子类只能有一个父类,而一个父类可以有多个子类。可以使用关键字extends来定义一个类的子类:
class 子类名 extends 

类在不加extends关键字时,默认为Object类,Object类是任何类(除了本身)的祖先类。

  • 子类的继承性
    • 子类和父类在同一个包中时,子类继承父类中不是private的成员变量和方法,且它们访问权限保持不变。
    • 子类和父类不在同一个包中时,子类不继承private和友好访问权限的成员变量和方法,只继承protectedpublic
  • 如果一个类A想通过一个其他类B的子类C创造对象来调用它的变量或者方法:①若要调用的是子类C内部新定义的而不是继承的,只要C与A同包即可; ②若要调用的是C继承下来的,只要C所继承的祖先类与A同包即可。

  • 子类可以通过继承的方法来操作未继承的变量。

  • instanceof运算符:当左边的操作元是右边的类或子类所创造的对象时,运算结果是true,否则是false

  • 子类继承的方法只能操作子类继承和隐藏的成员变量。子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量。

  • 方法重写:要求新的方法的类型与父类相应方法一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父亲的方法完全相同。例如:
class A {
    Object get() {
        return null;
    }
}
class B extends A {
    Integer get() {             //Integer是object的子类
        return new Integer(100);//返回一个Integer对象
    }
}
  • 重写方法可以操作继承的变量、方法,也可以操作子类新声明的成员变量、方法,但无法操作被子类隐藏的成员变量。如果子类想要使用被隐藏的方法或者成员变量,需使用super。注意,重写方法时不允许降低方法的访问权限,但可以提高访问权限。

  • 在使用重写时,注意区分重写,重载,语法错误。
  • super的使用方法:通过命令super.[成员变量]super.[方法]来分别使用被隐藏的变量和方法。

  • 子类不继承父类的构造方法。super必须是子类构造方法的头一条语句。如果在子类中没有写出super关键字,默认地有super()调用。

  • 在父类中定义多个构造方法时,应当包括一个不带参数的构造方法,因为Java不会提供默认的构造方法(不带参数的构造方法),会导致省略super时出现错误。

  • final关键字:final关键字可以修饰类、成员变量和方法中的局部变量。
    • 修饰类:被修饰的类不能有子类。
    • 修饰父类的方法:子类不能对被修饰的方法进行重写
    • 修饰变量:被修饰的变量变为常量,常量在运行期间不能发生变化。
  • 上转型对象:通过把子类创建的对象的引用赋给父类创建的对象来得到上转型对象。上转型对象不能操作子类新增的成员变量与方法,但是可以操作子类继承或隐藏的成员变量以及调用子类继承的方法或重写的实例方法。

  • 如果子类重写了父类的某个实例方法后,上转型对象调用的是子类重写的实例方法。

  • 注意的是,如果子类重写了父类的静态方法,则子类对象的上转型对象不能调用子类的重写静态方法,只能调用父类的静态方法。

  • 多态性:父类的方法被子类重写时,可以各自产生自己的功能行为。

  • 关键字abstract:
    • 修饰方法:被修饰的方法只能声明不能运行。
    • 修饰类:被修饰的类中可以有abstract方法,也可以有非abstract方法。而没被修饰的类只能有非abstract方法。
  • 不允许使用finalabstract同时修饰一个方法或类。

  • 不允许使用static修饰abstract方法。(abstract方法必须是实例方法)

  • abstract父类的非abstract子类必须重写父类的abstract方法。

  • abstract的类只能声明对象但是不能创建对象,但是该对象可以成为其子类的上转型对象。

  • 上转型对象与对象:
    技术图片

  • 使用多态进行程序设计的核心技术之一是使用上转型对象(将abstract类声明的对象作为其子类对象的上转型对象)。abstract类在实际中很好用,因为它注重面向对象而不是面向类。

  • 开-闭原则是对扩展开放,对修改关闭。遵守开闭原则的系统易于维护。

本周学习中遇到的问题和解决过程

  • 问题1:第五章课后题有问:重写方法的目的是什么?

  • 解决方法:书中P121解释为:子类在重写可以继承的方法时,可以完全按照自己的意图编写新的方法体,以便体现重写方法的独特的行为。重写的作用中解释:重写是为了增强类的重用性和复用性,扩展性;重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西。

  • 问题2:为什么使用接口,而不是直接写个方法实现呢?

  • 解决方法:当子类有不同的父类时,但还要有同样的行为标准时,可以使用同一个接口。

码云链接

https://gitee.com/lhr0321/20175318_JAVA

代码截图

技术图片

20175318 2018-2019-2 《Java程序设计》第4周学习总结

标签:多态   相同   否则   通过命令   com   ret   重写   img   没有   

原文地址:https://www.cnblogs.com/L1079991001/p/10992012.html


评论


亲,登录后才可以留言!