Java基础——抽象类&接口简介与使用

Java接口

一个接口(interface)是一些方法特征的集合,接口里没有方法的实现,因此这些方法在不同的地方被实现时,可以具有完全不同的行为。
Java接口可以有public、静态的和final的属性(常量)
Java接口里的方法和常量只能是public类型的

接口是对可插入性的保证

Java接口常用方法:

单方法接口:只含有一个方法,例如:
Runnable接口只有一个run()方法
ActionListener接口只有一个actionPerformed()方法

标识接口:没有任何方法和属性,它仅仅表明实现它的类属于一个特定的类型,例如:
Serializable接口和Remote接口

常量接口:使用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量,例如:
public interface AppConstants
{
    public static final DATA_SOURCE_NAME = "WEBPHONE_DATA_SOURCE";
    public static final USER_NAME = "APP_USER";
}
这样一来,凡是实现这个接口的Java类都会继承这些常量,并且可以像使用自己的常量一样使用这些常量,而不必加上AppConstants的前缀。
如果这些常量是在一个具体类中给出的,那么当然也是可以的,只是在应用的时候要加上类名作为前缀。这一做法被[TROST98]和[GRAND98-2]列为代码模式。

记住,任何公开的接口都是对用户的承诺,承诺一旦做出,就无法撤回。不建议常量接口的使用。

Java构件模型的顶端是java.lang.Object。所有的Java构件,包括数组对象,都以这个类为超类。注意:这是一个具体类,既不是Java接口也不是抽象类。
Java语言是强类型语言。这意味着Java编译器会对代码进行检查,以确定每一次赋值、每一次方法的调用时符合类型的,如果有任何不相符的情况,Java编译器就会给出错误。
类型检查基于这样一个简单的事实:每一个变量的声明都给这个变量一个类型,每一个方法(构造子)的声明都给出这个方法的特征。这样一来,Java编译器可以对任何的表达式推断出一个明显类型(Apparent Type),
Java编译器就可以基于明显类型对类型进行检查。

Java语言是类型安全的。任何被Java编译器接收的合法的Java类保证是类型安全的。换言之,在程序运行期间,不会有任何类型的错误。

Java是如何保证类型安全的?编译期间的类型检查,自动的存储管理,数组的边界检查。

 

抽象类

抽象类仅提供一个类型的部分实现。抽象类可以有实例变量,一个或多个构造子函数。抽象类可以同时拥有抽象方法和具体方法。
抽象类不会有实例,这些构造子方法不能被客户端调用来创建实例。一个抽象类的构造子可以被其子类调用,从而使一个抽象类的所有子类都可以有一些共同的实现,而不同的子类可以在此基础上有其自己的实现。
抽象类和子类的这种关系实际上是模板方法模式的应用。

抽象类是用来继承的,如果有可能,不要从具体类继承。

抽象类应当拥有尽可能多的共同代码
在一个从抽象类到多个具体类的继承关系中,共同的代码应当尽量移动到抽象类里。

抽象类应当拥有尽可能少的数据
一个对象的数据不论是否使用都会占用资源,因此,数据应当尽量放到具体类或者等级结构的低端。保证节省内存资源


Java接口具有比Java抽象类更好的特性,因此,应当优先使用Java接口声明一个超类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ddm01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值