20155117 王震宇 2006-2007-2 《Java程序设计》第四周学习总结

本文介绍了面向对象编程中的继承与多态概念,详细解释了如何使用关键字extend进行继承,以及super如何引用父类的方法。此外还讨论了多态的概念及其实现方式,并通过具体例子展示了接口的使用。

教材学习内容总结

继承(inheritance)

  • 继承是面向对象软件技术当中的一个概念。继承可以使得子类别具有父类别的各种属性和方法,避免了重复的行为定义。在子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能。另外,为子类别追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类别的行为在编译期就已经决定,无法在执行期扩充。

  • 关键字extend用来继承父类。语句格式:class 子类名 extends 父类名{}
  • 关键字super获取父类中的方法定义,引用父类的成分。

注意:private成员可以被继承,但是不能通过子类访问,要通过父类的非private方法访问。

多态和 is-a

  • 子类只能继承一个父类。
    1050108-20170319165417166-637022874.png

  • 检查语法的方式是从=号右边向左边读,右边类是不是左边类的子类。
  • 强制类型转换,可以让程序通过编译
  • 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。

  • 继承有“是一种”的关系,操作接口表示“拥有行为”。

代码托管

1050108-20170319195706010-1954949414.png
这周代码分了好几个目录不想一一截图了。

上周考试错题总结

错题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/02/220/20
第二周251/2511/518/38
第三周651/9021/610/48
第四周300/14001/710/58

参考资料

转载于:https://www.cnblogs.com/ikari/p/6581959.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值