第9章 接口 169

需要细看

9.1 抽象类和抽象方法 169

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
一个没有具体的方法体的方法是抽象的方法。在一个类中如果有抽象方法,该类必须定义为抽象类。
(1)抽象类的特点
A:抽象类和抽象方法必须用关键字abstract修饰
B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
C:抽象类不能实例化
D:抽象类的子类
a:是一个抽象类。
b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。
(2)抽象类的成员特点:
A:成员变量
有变量,有常量
B:构造方法
有构造方法,用于子类访问父类数据的初始化。
C:成员方法
有抽象,有非抽象
(3)抽象类的几个小问题
A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
用于子类访问父类数据的初始化
B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
为了不让创建对象
C:abstract不能和哪些关键字共存
a:final 冲突
b:private 冲突
c:static 无意义

9.2 接口 172

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
(1)接口的特点:
A:接口用关键字interface修饰
interface 接口名 {}
B:类实现接口用implements修饰
class 类名 implements 接口名 {}
C:接口不能实例化
那么,接口如何实例化呢?
按照多态的方式来实例化。
D:接口的实现类(子类)
a:是一个抽象类。
b:是一个具体类,这个类必须重写接口中的所有抽象方法。
由此可见:
A:具体类多态(几乎没有)
B:抽象类多态(常用)
C:接口多态(最常用)
(2)接口的成员特点:
A:成员变量
只能是常量
默认修饰符:public static final
B:构造方法
没有构造方法
C:成员方法
只能是抽象的
默认修饰符:public abstract
所有的类都默认继承自一个类:Object。
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。
(3)类与类,类与接口,接口与接口
A:类与类
继承关系,只能单继承,可以多层继承
B:类与接口
实现关系,可以单实现,也可以多实现。
还可以在继承一个类的同时,实现多个接口
C:接口与接口
继承关系,可以单继承,也可以多继承
(4)面试题:抽象类和接口的区别:
A:成员区别
抽象类:
成员变量:可以变量,也可以常量
构造方法:有
成员方法:可以抽象,也可以非抽象
接口:
成员变量:只可以常量
成员方法:只可以抽象
B:关系区别
类与类
继承,单继承
类与接口
实现,单实现,多实现
接口与接口
继承,单继承,多继承
C:设计理念区别
抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。
抽象类:
1、如果一个类中只要有一个方法是抽象方法,该类变成抽象类
2、抽象类不能被实例化,只用来被继承
3、如果一个类继承一个抽象类,必须实现抽象类中所有的抽象方法
否则,该类也会变成一个抽象类
4、抽象类的引用可以指向子类的实例,达到多态的效果
5、构造方法和静态方法不能定义成抽象方法

接口:
1、如果一个类中所有的方法都是抽象方法,可以定义成接口
interface
2、接口中所有的方法都是抽象方法,不能包含非抽象方法,
在方法中可以省略abstract关键字
3、接口不能被实例化,只用来被实现(implements)
4、如果一个类实现一个接口,必须实现接口中所有的抽象方法,
否则该类也会变成抽象类
5、接口的引用指向实现类的实例
6、接口中所有的量都是常量,没有变量
7、接口中没有构造方法
8、为了弥补继承的单一性,接口提供了多实现(一个类可以实现
多个接口),必须要实现多个接口中提供的抽象方法
9、一个类在继承一个类的同时可以去实现接口
10、接口可以继承接口

9.3 完全解耦 174

适配器模式

9.4 Java中的多重继承 178

Java是伪多重继承模式,属于单继承、多实现结合而形成的;在写法上,继承要写在多实现前面

9.5 通过继承来扩展接口 180

9.5.1 组合接口时的名字冲突 181

9.6 适配接口 181

9.7 接口中的域 183

9.7.1 初始化接口中的域 184

9.8 嵌套接口 185

9.9 接口与工厂 186

工厂方法设计模式

9.10 总结 188


书籍相关资源:

pdf文档链接:https://pan.baidu.com/s/1yuWb_kI0sB3yHLBndPcyEg 提取码:scvw
书中demo: https://github.com/BruceEckel/TIJ4-code
Thinking in Java 4th英文版的课后习题答案: http://greggordon.org/java/tij4/solutions.htm