接口、类详解
Interfaces(接口)
Definition(定义):
In the Java programming language, an interface is not a class but a set of requirements for classes that want to conform to the interface, and provide a template of behavior that classes are expected to implement.
Java程序语言中,接口不是类而是为从此接口继承的类提供需求设置,为希望从此接口继承的类提供一个行为模版.
描述:
1, 接口是对行为(方法)的抽象。从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
2, 接口的成员是从基接口继承的成员和由接口本身定义的成员。
3, 接口定义可以定义零个或多个成员。接口的成员必须是方法、属性、事件或索引器。接口不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。
4, 定义一个接口,该接口对于每种可能种类的成员都包含一个:方法、属性、事件和索引器。
5, 接口成员默认访问方式是public。接口成员定义不能包含任何修饰符,比如成员定义前不能加abstract,public,protected,internal,private,virtual,override 或static 修饰符。
6, 接口的成员之间不能相互同名。继承而来的成员不用再定义,但接口可以定义与继承而来的成员同名的成员,这时我们说接口成员覆盖了继承而来的成员,这不会导致错误,但编译器会给出一个警告。关闭警告提示的方式是在成员定义前加上一个new关键字。但如果没有覆盖父接口中的成员,使用new 关键字会导致编译器发出警告。
7, 接口方法声明中的属性(attributes), 返回类型(return-type), 标识符(identifier), 和形式参数列表(formal-parameter-lis)与一个类的方法声明中的那些有相同的意义。一个接口方法声明不允许指定一个方法主体,而声明通常用一个分号结束。
8, 接口属性声明的访问符与类属性声明的访问符相对应,除了访问符主体通常必须用分号。因此,无论属性是读写、只读或只写,访问符都完全确定。
9, 接口索引声明中的属性(attributes), 类型(type), 和形式参数列表(formal-parameter-list)与类的索引声明的那些有相同的意义。
Java常用接口分类:
单方法接口:仅且只有一个方法,只有实现了这个接口(重写这个接口中的唯一一个方法),你才有资格去事件监听器列表里注册(参数为Actionlistener类型),当事件源变动时,自动调用这个唯一的actionPerformed方法.
标识接口:是没有任何方法和属性的接口。标识接口不对实现它的类有任何语意上的要求,它仅仅表明了实现它的类属于一个特定的类型(传递)。
不推荐过多的使用标识接口。
常量接口:用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量(以前在做画板的时候这么干过)。建议不要模仿这种常量接口的做法。
Classes(类)
A class can contain methods, variables,initialization code, and, as we'll discuss later on, even other classes. It serves as a blueprint for making class instances, which are runtime objects that implement the class structure.
Superclasses/Subclasses(超类/子类)
You are making a new class that derives from an existing class. The existing class is called the superclass, base class, or parent class. The new class is called the subclass, derived class, or child class.
你从一个已存在的类衍生了一个新类,这个已存在的类就叫做超类(基类,父类),新类就叫做子类(生成类).
Object: The Cosmic Superclass(宇宙类)
The Object class is the ultimate ancestor—every class in Java extends Object. However, you never have to write, such as:
class Employee extends Object
The ultimate superclass Object is taken for granted if no superclass is explicitly mentioned. Because every class in Java extends Object, it is important to be familiar with the services provided by the Object class.
Object是最终的祖先-所有类都是从Object继承.在定义类的过程中不用显示的从Object类继承.
Abstract Classes(抽象类)
As you move up the inheritance hierarchy, classes become more general and probably more abstract. At some point, the ancestor class becomes so general that you think of it more as a basis for other classes than as a class with specific instances you want to use.
基层层次越往上,类就越具概括性越抽象.一定情况下,祖先那变得如此的共同,你可以把他想象成一个基类而不是可以实例化一个对象可直接使用的一个类.
描述:
1, abstract关键字使得一个类抽象化。静态类、值类型和接口都不支持抽象修饰符。
2, 你不能为一个抽象类创建一个实例。非抽象类是具体的类,你可以为一个非抽象类创建一个实例。
3, 类的成员也可以是抽象的。方法、属性、索引器和事件这些成员都可以是抽象的,但是静态成员不能是抽象的。
4, 拥有抽象成员的类也必须是抽象的。一个抽象成员具有一个签名但是没有函数体。
5, 抽象函数暗示了虚特性,抽象成员必须在派生类型中加以实现。
Inner Classes(内部类)
An inner class is a class that is defined inside another class.
内部类是一个定义在其他类内部的类.
小节:
接口和抽象类的区别:
|
1,接口可以多重继承,但是抽象类不可以; 2,抽象类能够定义方法的实现;接口不能包含方法的实现。最大的区别是由抽象类可以派生出一些成员的实现,但接口却不包含任何成员的实现 3,如果继承一个抽象类,当你类更新时,所有的子类都会跟着更新;而接口是一成不变的,一旦发布了一个接口,永远不要再更改它 4,一个类只能继承一个抽象类,但可以继承多个接口 5,接口成员只能是属性、方法、事件和索引器。抽象类无限制。 6,抽象类可以用任何可访问性来声明,但接口成员必须全都具有公共可访问性。 7,接口可以定义类构造函数,但不能定义实例构造函数;抽象类无限制。 |
《参考文献》
1, 《 Core Java™ 2 Volume I - Fundamentals, Seventh Edition》-2004
2, 《Learning Java》-2000
3, 网络文档

991

被折叠的 条评论
为什么被折叠?



