20165305 苏振龙《Java程序设计》第四周学习总结

时间:2023-03-09 03:40:24
20165305 苏振龙《Java程序设计》第四周学习总结

第五章

继承:

面向对象中,为避免多个类间重复定义共同行为。(简单说就是将相同的程序代码提升为父类。)

特点:

这里接触到了新的关键词,extends,在java语言中用estends来继承父类的行为。
is-a原则,在java中子类只能继承一个父类。要开始理解多态,必须先知道操作的对象是“哪一种”。
多态,使用单一接口操作多种类型的对象。
在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,称为重新定义。
如果某方法区块真的没有任何程序代码操作,可以直接使用abstract标识该方法为抽象方法,该方法不用撰写{}区块,直接“;”结束即可。

注意:

关键字extends是为了扩充和继承父类的行为。
在java中一个子类只能继承一个父类。
在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。

继承与法细节:
特点:

protected成员权限关键字,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取。(不开放访问权限,但可以直接存取
如果想要取得父类中的方法定义,可以调用方法前,加上super关键字。
在class前使用了final关键字定义,那么表示这个类是最后一个,不会再有子类,也就相当于不能再被继承。在定义方法时候也可以限定为final,表示最后一次定义方法了,也就是子类不可以重新定义final方法。
在java继承中一定继承了java.lang.Object,简单来说任何类追溯至最上层类中一定是Object父类。

注意:

JAVA中有3个权限关键字,public、protected与private,但实际上有4个权限范围。
若原来成员public,子类中重新定义时不可谓private或protected。
在JDk5之前,重新定义方法时除了可以定义权限较大的关键字之外,其他部分必须与父类中方法签署完全一致。
在创建ArrayList实例时候,可以指定内部数组初始容量,如果使用无参数构造函数,则默认容量为16。
垃圾收集:在执行流程中,无法通过变量参考的对象,就是GC(Garbage Collection) 认定的垃圾对象。
抽象类:虽然是抽象方法,但在go()方法中,还是可以调用。

第六章

接口:

可以理解为一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法所组成。

接口的定义格式:

接口的方法成员,只允许被public, abstract修饰。 '''Interface 接口名称{ }''' 接口中的数据成员都为static final类型,必须进行初始化,且接口的数据成员的值不能被修改,允许省略static, final关键字。
接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字

接口的实现

接口不能用new运算符直接产生对象,必须利用其特性设计新的类,再用新类来创建对象 与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口。 实现格式: class 子类名称 implements 接口A, 接口B,….{ //子类成员声明 } 接口的使用必须通过子类,子类必须覆写全部抽象方法。一个子类虽然只能继承于一个父类,但可以同时实现多个接口。

接口的继承

接口不能继承一个抽象类,却可以通过extends同时继承于多个接口。

接口与继承的区别:

定义: 以abstract声明,抽象方法可有可无。
以interface声明,由静态常量和抽象方法组成。
组成:构造方法、抽象方法、普通方法、常量、变量、静态常量、抽象方法
使用:子类继承抽象类(extends)、子类实现接口(implements)
关系
抽象类可以实现多个接口
接口不能继承抽象类,但允许继承多个接口
对象都通过对象的多态性产生实例化对象
局限抽象类有单继承的局限但是接口可以实现多重继承
选择   如果抽象类和接口都可以使用的话,优先使用接口,可以避免单继承的局限

多态

是指不同类型的对象可以响应相同的消息,从相同的基类派生出来的多个类型可被当作同一种类型对待,可对这些不同的类型进行同样的处理,由于多态性,这些不同派生类对象响应同一方法时的行为是有所差别的 例如:所有的Object类的对象都响应toString()方法。

多态性在java中主要有以下两种体现:

方法的重载与覆写 对象的多态性

代码托管(ch5,ch6)

脚本截图

20165305 苏振龙《Java程序设计》第四周学习总结