程序员开发实例大全宝库

网站首页 > 编程文章 正文

java 核心技术-12版 卷Ⅰ- 6.1.2 接口的属性

zazugpt 2024-08-21 04:05:11 编程文章 19 ℃ 0 评论

原文

6.1.2 接口的属性

接口不是类。具体来说,不能使用 new 操作符实例化一个接口:

x = new Comparable(...) ;// error

?不过,尽管不能构造接口对象,但仍然能声明接口变量:

Comparable x;// OK

?接口变量必须引用实现了这个接口的一个类对象:

x= new Employee(...); // OK provided Employee implements Comparable

?接下来,如同使用 instanceof检查一个对象是否属于某个特定类一样,也可以使用instanceof 检查一个对象是否实现了某个特定的接口:

if(anObject instanceof Comparable){ ...}

?与建立类的继承层次结构一样,也可以扩展接口。这里允许有多条接口链,从通用性较高的接口扩展到专用性较高的接口。例如,假设有一个名为 Moveable 的接口:

public interface Moveable{
	void move(double x, double y);
}

然后,可以假设一个名为 Powered 的接口扩展了以上 Moveable 接口:

public interface Powered extends Moveable{
	double milesPerGallon();
}

虽然接口中不能包含实例字段,但是可以包含常量。例如:

public interface Powered extends Moveable{
	double milesPerGallon();
  double SPEED_LIMIT = 95;// a public static final constant
}


接口中的方法都自动为 public,类似地,接口中的字段总是 public static final。

注释:可以将接口方法显式标记为 public,将字段标记为 public static final,这是合法的。有些程序员出于习惯或者提高清晰度的考虑,可能会这样做。但Java 语言规范建议不要提供冗余的关键字,本书也采纳了这个建议。


?尽管每个类只能有一个超类,但可以实现多个接口。这就为定义类的行为提供了极大的灵活性。例如,Java 程序设计语言有一个非常重要的内置接口,名为 Cloneable (将在 6.1.9节中详细讨论)。如果你的类实现了这个 Cloneable 接口,Object 类中的 clone 方法就可以创建你的类对象的一个完全副本。如果你希望自已设计的类既能够克隆又能够比较,只要实现这两个接口就可以了。可以使用逗号将想要实现的各个接口分隔开。

class Employee implements Cloneable, Comparable

?注释: 记录和枚举类不能扩展其他类(因为它们隐式地扩展了 Record 和 Enum类)。不过,它们可以实现接口。

?注释: 接口可以是密封的 (sealed.)。与密封类一样,直接子类型(可以是类或接口)必须在 permits 子句中声明,或者要放在同一个源文件中

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表