第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