Thinking in java 第9章 接口 笔记+习题

本文详细探讨了Java中的接口,包括接口与抽象类的区别、完全解耦的概念、多继承的实现、接口的扩展以及接口在实际编程中的应用,如Scanner的适配、工厂方法等。通过对《Thinking in java》第9章的学习,理解接口在软件设计中的重要作用。
摘要由CSDN通过智能技术生成

Thinking in java 第9章 接口

学习目录


9.1 抽象类和抽象方法

1. 抽象类是普通类与接口之间的一种中庸之道。

2. 有抽象方法的类一定要是抽象类,抽象类可以有有非抽象方法。抽象方法只需声明方法体。

3. 抽象类和抽象方法的意义:

  • 可以使类的抽象性明确起来,并告诉用户和编译器打算怎样来使用它们。
  • 重要的重构工具,使我们可以很容易地将公共方法沿着继承层次结构向上移动。

 

9.2 接口

1. 接口允许人们通过创建一个能够被向上转型为多种基类的类型,来实现类似多重继承的特性。

2. 接口隐式是static和final的。

 

9.3 完全解耦

1. 如果某个继承结构以外的类想要用里面的方法,就会很麻烦,而接口可以在很大程度上放宽这种限制,使得可复用性更好。

 

9.4 Java中的多继承

1,.可以继承任意多个接口,并可以向上转型为每个接口,因为每一个接口都是一个独立的类型。

2. 使用接口的核心原因:为了能够向上转型为多个基类型(以及由此而带来的灵活性)。另一方面可以防止客户端程序员创建该类的对象。

3. 如果要创建不带任何方法定义和成员变量的基类,那么久应该选择接口而不是抽象类。

 

9.5 通过继承来扩展接口

1. 使用extends来扩展接口。

2. 基类和接口的方法名相同时,当只有返回类型不同时会报错。

 

9.6 适配接口

1. Scanner类的构造器接受的就是一个Readable接口,若要让Scanner可以作用于它,就让它成为Readable,并重写public int read(CharBuffer cb)方法。在read内部,将输入内容添加到CharBuffer参数中,或者在没有任何输入时返回-1。(例P182-183)。

 

9.7 接口中的域

1. 放入接口中的任何域都是staticfinal的(方法是public的),在Java SE5之前会由此来创建常量组工具,之后被enum替代。

 

9.8 嵌套接口

1. 接口可以嵌套在类或其他接口之中(应用格式为例:implements A.B) 

2. 类中可以嵌套private类的接口,可以强制该接口中的方法定义不要添加任何类型信息(不允许向上转型),且其不能在定义它的类之外被实现。

3. 在接口中嵌套时,所有的接口元素必须是public的,不能声明为private。

 

9.9 接口与工厂

1. 理论上通过工厂方法设计模式,代码将完全与接口的实现分离,这就使得我们可以透明地将某个实现替换为另一个实现。(例P187)。工厂类用工厂接口返回一个实现接口,实现类用实现接口实现具体操作。


练习:

练习1:修改第8章练习9中的Rodent,使其成为一个抽象类。只要有可能们就将Rodent的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值