教材学习内容总结
第六章
1.接口
使用interface来定义一个接口,接口分为接口声明和接口体。
(1)接口声明:interface 接口的名字
(2)接口体:包含常量的声明(没有变量)和抽象方法两部分。接口体中所有的常量和抽象方法的访问权限都是public,而且是static常量。
2.实现接口
(1)类实现接口
一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名。
(2)重写接口中的方法
接口中的方法一定是abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显的用public来修饰。
抽象类可以重写接口中的方法,也可以直接拥有接口中的方法。
(3)接口细节说明
程序可以用接口名访问接口中的常量,但是如果一个类实现了接口,那么该类可以直接在类体中使用该接口的常量。
定义接口时,如果在关键字interface前面加上public关键字,就称这样的接口是public接口。Public接口可以被任何一个类实现。如果一个接口不加public修饰,就称作友好接口,友好接口可以被与该接口在同一个包中的类实现。
如果父类实现了某个接口,那么子类也实现该接口,不用再声明实现。
接口也可以被继承,可以通过关键字extends声明一个接口是另一个接口的子接口。接口中的常量和方法都是public的,所以子接口将继承父接口中的全部方法和常量。
3.接口的UML图
顶部第一层是名字层,接口的名字必须是斜体字,而且需要用《interface》修饰名字,并且该修饰和名字分列在两行。
第二层是常量层,列出接口中的常量和类型,“常量名字:类型”。
第三层是方法层,也称操作层,列出接口中的操作方法及返回类型,“方法名字(参数列表):类型”。
如果一个类实现了一个接口,那么类和接口的关系是实现关系,称类实现接口。用虚线连接,虚线的起始端是类,终点端是它实现的接口,但终点端使用一个空心的三角形表示虚线的结束。
4.接口回调
用借口声明的变量称作接口变量。
接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。
接口变量调用类实现的接口方法(这一过程称为接口回调)。
接口无法调用类中的其他非接口方法。
接口的思想在于它可以要求某些类有相同名称的方法,但方法的具体内容可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法。接口在要求一些类有相同名称的方法的同时,并不强迫这些类具有相同的父类。
6.接口与多态
由接口产生的多态就是指不同的类在实现同一个接口能具有不同的实现方式,那么接口产量在回调接口方法时就可能具有多种形态。
7.接口参数
如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。
8.abstract 类与接口的比较
abstract 类和接口都可以有abstract方法。
接口中可以有常量,不能有变量;而abstract类中既可以有常量,也可以有变量。
abstract类中也可以有非abstract方法,接口不可以。
9.面向接口编程
可以通过在接口中声明若干个abstract方法,表达这些方法的重要性,方法体的内容细节由实现接口的类去完成。
第七章
1.内部类
内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。
内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
内部类仅供它的外嵌类使用,其他类不可以用某个类莫内部类声明对象。
内部类可以被修饰为static内部类,static内部类就是外嵌类中的一种静态数据类型,这样一来,程序就可以在其他类中使用static内部类来创建对象了。static内部类不能操作外嵌类中的实例成员变量。
2.匿名类
2.1和子类有关的匿名类
创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。不可能用匿名类声明对象,但可以直接用匿名类创建一个对象。
匿名类可以继承父客户的方法也可以重写父类的方法。
使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类。
匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法。
由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法。
2.2和接口有关的匿名类
允许直接用接口名和一个类体创建一个匿名对象。
如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,类体必须要重写接口中的全部方法。
3.异常类
断言语句一般用于程序不准备通过捕获异常来处理的错误。
语法格式:使用关键字assert声明一条断言语句。
当使用Java解释器直接运行应用程序时,默认地关闭断言语句,在调试程序时可以使用-ea启用断言语句。
5.finally语句
在执行try-catch 语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。
如果在try-catch语句中执行了return语句,那么finally子语句仍然会被执行。
try-catch语句中执行了程序退出代码,则不执行finally语句(当然包括其后的所有语句)。
教材学习中的问题和解决过程
要区分好abstract类和接口,判断好什么时候使用。内部类这部分的概念很容易混淆,要多参照例题去理解,要记住static什么时候能用,什么时候不能用。
代码调试中的问题和解决过程
看完一小节的内容后要上机运行例题结合理解,比较容易掌握。
其他
还是要多敲代码才可以啊。
学习进度条
|
代码行数(新增/累积) |
博客量(新增/累积) |
学习时间(新增/累积) |
重要成长 |
目标 |
2000行 |
10篇 |
80小时 |
|
第一周 |
67/67 |
1/1 |
8/8 |
|
… |
… |
… |
… |
|
第七周 |
288/1852 |
1/6 |
8/60 |
|
参考资料
《Java2实用教程(第5版)》