教材学习内容总结
每个子类只能有一个父类, 而一个父类可以有多个子类. 可以使用关键字 extends 来定义一个类的子类: class 子类名 extends 父类名. 不加 extends 关键字时, 默认为 Object 类, Object 类是任何类 (除了本身) 的祖先类. 简单的说, 子类拥有父类的所有(除了 private 类及不同包的友好类), 同时可以拥有自己新的东西. 子类可以通过继承的方法来操作未继承的变量. 父类的方法被子类重写时, 可以各自产生自己的功能行为.
如果一个类 A 想通过一个其他类 B 的子类 C 创造对象来调用它的变量或者方法:
1若要调用的是子类 C 内部新定义的而不是继承的, 只要 C 与 A 同包即可;
2若要调用的是 C 继承下来的, 只要 C 所继承的祖先类与 A 同包即可.
instanceof 运算符: 除了之前在第二章总结的以外, 还有: 当子类创造的对象与父类去使用 instanceof 运算符时, 得出的结果也是 true.
当子类新声明的变量名与继承的变量名相同时, 继承的变量名会被隐藏. 但是我们仍可以通过继承的方法来对隐藏的变量名进行操作.(继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量.)
方法重写: 要求新的方法的类型与父类相应方法一致或者是父类的方法的类型的子类型, 并且这个方法的名字, 参数个数, 参数的类型和父亲的方法完全相同. 重写方法可以操作继承的变量, 方法, 也可以操作子类新声明的成员变量, 方法. 如果子类想要使用被隐藏的方法或者成员变量, 需使用 super. 注意, 重写方法时不允许降低方法的访问权限.
super 的使用方法: 通过命令 super.[成员变量]和 super.[方法]来分别使用被隐藏的变量和方法. 在父类中定义多个构造方法时, 应当包括一个不带参数的构造方法, 这是因为如果在子类中没有写出 super 关键字, 默认地有 super().
final 关键字: final 关键字可以修饰类, 成员变量和方法中的局部变量.1修饰类: 被修饰的类不能有主类.
2修饰父类的方法: 子类不能对被修饰的方法进行重写
3修饰变量: 被修饰的变量变为常量, 常量在运行期间不能发生变化.
上转型对象: 通过把子类创建的对象的引用赋给父类创建的对象来得到上转型对象. 上转型对象不能操作子类新增的成员变量与方法, 但是可以操作子类继承或隐藏的成员变量或方法. 注意的是, 如果子类重写了父类的静态方法, 则子类对象的上转型对象不能调用子类的重写静态方法, 只能调用父类的静态方法.
关键字 abstract:1修饰方法: 被修饰的方法只能声明不能运行.
2修饰类: 被修饰的类中可以有 abstract 方法, 也可以有非 abstract 方法. 而没被修饰的类只能有非 abstract 方法.
abstract 父类的 abstract 子类可以继承或重写父类的 abstract 方法, 但是 abstract 父类的非 abstract 子类必须重写父类的 abstract 方法.
abstrcat 的类只能声明对象但是不能创建对象, 但是该对象可以成为其子类的上转型对象.
abstract 不能和 final 同时修饰.
abstract 类在实际中很好用, 因为它注重面向对象而不是面向类.
开闭原则是对扩展开放, 对修改关闭. 我觉得在这其中 abstract 起了很大的作用. 遵守开闭原则的系统易于维护.
使用 interface 来定义一个接口. 接口 = 接扣声明 + 接口体. 接口体中只有常量 (权限为 public, 且为 static 常量) 和抽象方法(权限为 public, 为 stract 型), 没有变量.
public 接口可以被任意一个类实现, 友好接口可被同一个包里的接口实现. 接口也可以通过 extens 来继承, import 语句可以引入包的类也可以引入包的接口.
通过类来实现接口: 在类声明中使用关键字 implements 来声明一至多个接口. 非抽象类实现了某个接口, 一定要重写这个接口中的所有方法(要去掉 abstract, 体现 public). 抽象类实现了某个接口, 既可以重写, 也可以不重写.
可以通过接口名来访问常量, 也可以通过实现接口的类来直接使用.
接口回调: 简单的说, 接口回调就是为了能够调用某个接口中的方法. 具体操作: 类 A 实现接口 B;A 创建对象 a;B 声明变量 b;b=a.
教材学习中的问题和解决过程
问题 1: 使用或覆盖了已过时的 API.
问题 1 解决方案: 一开始我以为是运行错误, 上网查找后知道这只是一个警告, 只是告诉使用了已经过时的函数, 但 jdk 是向下兼容的
解决方法 1: 直接在 myeclipse 里面运行.
解决方法 2: 在 cmd 下编译, javac Dert.java 写一个网页 applet code=Dert width=200 height=200, 保存为: 任意名字. html 文件, 然后双击网页.
问题 2: 一个具有 5 个类的程序, 错误运行了被调用类.
问题 2 解决方案: 确定程序主体运行.
代码调试中的问题和解决过程
问题 1: 课上测试题边界运行结果不符合程序计算规则.
代码需要优化
代码托管 https://gitee.com/SANFENs/20175314
上周考试错题总结
错题 1
原因: 概念不清
理解情况: 接口的方法默认是 public abstract, 变量默认是 public static final.
错题 2
原因: 概念不清
理解情况: 1, 接口是可以被接口继承的, 即通过关键字 extends 声明一个接口是另一个接口的子接口. 由于接口中的方法和常量都是 public, 子接口将继承父接口中的全部方法和常量.
2, 抽象类可以实现接口, 当一个类声明实现一个接口而没有实现接口中所有的方法, 那么这个必须是抽象类, 即 abstract 类.
3, 抽象类是可以继承实体类.
心得体会
因为马上要考科目二了, 最近在驾校待的时间会比较多, 所以这周的 Java 学习时间就比较少了, 老师没有在蓝墨云上发布第四周的学习任务, 而在博客园中设置为选做但是第五章的内容还是相当重要的, 我感觉从这一章开始才慢慢接触到 Java 的特殊, 希望自己在上半年利用周末和小长假查缺补漏, 避免重现以往学期期末临时抱佛脚的惨状.
学习进度条
代码行数 | 博客量 | 学习时间 | 重要成长 | |
---|---|---|---|---|
目标 | 5000 行 | 16 篇 | 320 小时 | |
第一周 | 51/100 | 1/1 | 12/20 | 基本掌握了 Linux 的简单指令 |
第二周 | 173/200 | 1/1 | 18/20 | 学习了 Java 重要基本语法 |
第三周 | 672/800 | 1/1 | 18/20 | 学习了包含多个类的 Java 程序及类的包机制 |
第四周 | 436/600 | 1/1 | 12/20 | 学习程序父类和子类的继承规则 |
计划学习时间: 20 小时
实际学习时间: 12 小时
参考资料
Java 学习笔记(第 8 版) http://book.douban.com/subject/26371167/
《Java 学习笔记(第 8 版)》学习指导 http://www.cnblogs.com/rocedu/p/5182332.html
使用开源中国 (码云) 托管代码
使用 JDB 调试 Java 程序 https://www.cnblogs.com/rocedu/p/6371262.html
使用码云和博客园学习简易教程 http://www.cnblogs.com/rocedu/p/6482354.html
来源: http://www.bubuko.com/infodetail-2997439.html