抽象类与接口的三点区别

在使用上,一个不包含非抽象方法的抽象类与接口是类似的,不过请注意以下几点

1:一个类可以实现任意多个接口,但它最多只能继承一个抽象类

2:一个抽象类可以含有诺干个非抽象方法,它通常是模板方法模式的一个实例.而一个接口的所有方法都是抽象的,无论是否将它的方法显示地声明为抽象.

3:一个抽象类可以声明实例变量,其子类可以继承这些实例变量.而一个接口不能声明实例变量,不过接口可以声明static final修饰的域。

4:一个抽象类可以定义构造方法,而接口不能。

5:一个抽象类的可见性修饰符可以是public,protected,private,或者无修饰符(表示包内可见);而一个接口的可见性修饰符只能是public,或者无修饰符(表示包内可见)

6:一个抽象类的方法的可见性修饰符可以是protected,private,或者无修饰符(表示包内可见);

而一个接口的方法的可见性修饰符只能是public.

7:一个抽象类是从Object类派生而来的,它继承了Object类的clone()方法和equals()方法。

 

 

 

例:

 

package com.oozinoz.simulation;

import com.oozinoz.units.*;

 

interface RocketSim()

{

       abstract Length appgee();

       public Force thrust();

}

 

下面的表述正确的是?

A: RocketSim接口中的两个方法都是抽象方法,尽管只有apogee()方法显式地声明为抽象的

   正确,接口的方法总是抽象的,无论是否显式地声明

B: RocketSim接口中的两个方法都是公共方法,尽管只有thrust()方法显式地声明为公共的

   正确,接口的方法总是公共的,无论是否显式地声明。

C: 所有接口都是公共的,所以RocketSim也是公共的,尽管它没有显式地声明为公共的

    错误,该接口的可见性受限于其所在的包,RocketSim接口没有显式地声明为public,因而它在包内可见,com.oozinoz.sim包之外的其他类是无法访问或实现该接口的。

D: 可以再创建一个接口,如RocketSimSolid接口,并扩张RocketSim接口。

   正确,例如,List接口和Set接口都扩展了java.util包中的Collection接口。

E: 每个接口必须至少含有一个方法

  错误,不含方法的接口被称作标记(market)接口

F:接口可以声明实例域,实现该接口的类,也必须声明该域。

  错误,一个接口不能声明实例域,不过它可以通过声明static和final修饰的域来声明常量

G:虽然不能实例化一个接口,但接口定义可以声明构造器方法,要求实现该接口的类必须提供具有指定参数的构造器的方法。

  错误,接口不可以定义构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值