20155117 王震宇 2006-2007-2 《Java程序设计》第四周学习总结
教材学习内容总结
继承(inheritance)
-
继承是面向对象软件技术当中的一个概念。继承可以使得子类别具有父类别的各种属性和方法,避免了重复的行为定义。在子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。
-
关键字extend用来继承父类。语句格式:
class 子类名 extends 父类名{}
-
关键字super获取父类中的方法定义,引用父类的成分。
注意:private成员可以被继承,但是不能通过子类访问,要通过父类的非private方法访问。
多态和 is-a
-
子类只能继承一个父类。
-
检查语法的方式是从=号右边向左边读,右边类是不是左边类的子类。
-
强制类型转换,可以让程序通过编译
-
Role role1 = new SwordsMan()
-
SwordsMan swordsman = role1; //No
-
SwordsMan swordsman = (SwordsMan)role1; //Yes
-
多态:使用单一接口操作多种类型的对象。
接口 -
关键字interface
-
@Override
@Override
不是关键字,但是可以把它当做关键字来使用。当你想要覆写某个方法时,可以添加这个注解。在不小心重载而非覆写了该方法时,编译器就会生成一条错误信息。- (1)可以当注释用,方便阅读;
- (2)编译器可以给你验证
@Override
下面的方法是否是你父类中所有的,如果不是则报错。例如,你想重写父类中的某个方法,如果没写@Override
,而你下面的方法又写错了,比如参数类型个数或者方法名不同,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。
public interface Swimmer
{
public void swim();
}
public abstract class Fish implements Swimmer
{
protected String name;
public Fish(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public abstract void swim();
}
public class Human implements Swimmer {
private String name;
public Human(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public void swim() {
System.out.printf("Human %s swim%n", name);
}
}
此时Human操作了Swimmer,但没有继承Fish。
- 继承有“是一种”的关系,操作接口表示“拥有行为”。
代码托管
这周代码分了好几个目录不想一一截图了。
上周考试错题总结
错题1:两个Integer对象比较大小,可以使用(comareTo())方法
java 中对象比较大小有两种方法
1:实现Comparable 接口 的 public int compareTo(T o) 方法;
2:实现Comparator 接口 的 int compare(T o1, T o2)方法;
错题2:“30”转化为byte类型的30的语句是Byte.parseByte(“30”);
错题3:可以使用java.util.Arrays的fill()
)方法把数组初始化成相同的值。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 2/2 | 20/20 | |
第二周 | 251/251 | 1/5 | 18/38 | |
第三周 | 651/902 | 1/6 | 10/48 | |
第四周 | 300/1400 | 1/7 | 10/58 |