20165211 2017-2018-2 《Java程序设计》第4周学习总结
20165211 2017-2018-2 《Java程序设计》第4周学习总结
教材学习内容总结
本周,我学习了书本上第五、六两章的内容,以下是我整理的主要知识。
第五章 子类与继承
子类与父类
1.1子类
class 子类名 extends 父类名
由继承而来的类称为子类,被继承的类称为父类(超类)。
Java不支持多重继承,子类只能有一个父类,子类与父类是“is-a”关系。
1.2类的树形结构
Java的类按继承关系成树形结构(一对多),根结点是object类,是所有类的祖先类。
若类的声明中没有使用extends关键字,默认这个类是object的子类
子类的继承性
2.1 子类和父类在同一包中的继承性
子类自然地继承了其父类中不是private的成员作为自己的成员
2.2 子类和父类不在同一包中的继承性
子类只继承父类中的protected和public访问权限的成员变量作为子类的成员变量。
2.3 protected的进一步说明
子类与对象
3.1 子类对象的特点
用子类的构造方法创建一个子类的对象时,父类的成员变量也分配了内存范围,只将子类继承的那部分成员变量,作为分配给子类对象的变量
3.2 关于instanceof运算符
左面的操作元是对象,右面的操作元是类,当左面的操作元是右面的类或其子类所创建的对象时,结果是true。
成员变量的隐藏和方法重写
成员变量的隐藏
声明的成员变量的名字和从父类继承来的成员变量的名字相同,在这种情况下,子类就会隐藏所继承的成员变量。
方法重写
子类通过重写隐藏已继承的方法
子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为
重写方法可以操作继承的成员变量、调用新意义和其他方法,但无法操作被子类隐藏的成员变量和方法
重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限
super关键字
用super操作被隐藏的成员变量和方法
在子类中想使用被子类隐藏的成员变量或方法时,需要使用关键字super。例:super.x
,super.play
使用super调用父类的构造方法
子类不继承父类的构造方法,因此,子类在其构造方法中需要使用super来调用父类的构造方法,且super必须是子类构造方法的头一条语句。
final关键字
final类
final类不能被继承,不能有子类
final方法
用final修饰父类中的一个方法,那么,这个方法不允许子类重写
常量
概念:成员变量或局部变量被修饰为final
对象的上转型对象
子类与父类:“is-a”关系
上转型对象的实体是由子类负责创建的,但上转型对象会失去原对象的一些属性和功能。
上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。可以访问子类继承或隐藏的成员变量,也可以调用子类继承的方法或子类重写的实例方法。
继承与多态
多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。
abstract类和abstract方法
abstract类可以有abstract方法
abstract类不能用new运算符创建对象
abstract类的子类
abstract类的对象做上转型对象
面向抽象编程
可以使程序的设计者把主要精力放在程序的设计上,而不必拘泥于细节的实现
使用多态进行程序设计的核心技术之一是使用上转型对象,
开-闭原则
设计的系统对扩展开放,对修改关闭,系统易于维护
第5章 接口与实现
接口
接口声明
interface 接口的名字
接口体
包括常量的声明和抽象方法两部分,只有抽象方法,没有简单方法,所有常量的访问权限一定是public,static常量,所有抽象方法的访问权限一定是public
实现接口
一个类需要在类声明中使用关键字implement
声明该类实现一个或多个接口,实现多个接口,用逗号隔开。例:class A implement Printable ,Addable
如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。类在重写接口方法时不仅要去掉abstract修饰符,给出方法体,方法访问权限要用public修饰。
接口也可以被继承
接口的UML图
名字层--常量层--方法层
接口回调
用接口声明的变量称作接口变量,接口属于引用型变量
接口回调是指:可以把实现某一接口的类创建的对象的引用复制给该接口声明的接口变量,那么改接口就可以调用被类实现的接口方法。
理解接口
接口可以抽象出重要的行为标准,该行为标准用抽象方法表示
可以把实现接口的类的对象引用复制给接口变量,该接口变量可以调用被该类实现的接口方法。
接口与多态
有接口产生的多态是指不同的类在实现同一个接口是可能具有不同的实现方法,那么接口变量在回调接口方法时就可能具有多种形态。
接口参数
abstract类与接口的比较
abstract类和接口都可以有abstract方法
接口中只可以有常量,不能有变量,abstract类中既可以有常量,也可以有变量
abstract类中可以有非abstract方法,接口不可以
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:cheapGoods.newSetWeight(),括号中需要填入int型的数据。
-
问题2:
-
问题2解决方案:使用println输出产生错误,应为printf
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 37/37 | 1/1 | 10/10 | |
第二周 | 399/436 | 1/2 | 12/22 | |
第三周 | 764/1163 | 1/3 | 18/40 | |
第四周 | 687/1813 | 1/4 | 12/52 |