JAVA面试题2(3)

2019-05-17 17:27

接口与抽象类的主要异同点如下:

(1) 接口定义了一组特定功能的对外接口与规范,而并不真正实现这种功能,功能的实现留待给实现这一接口的各个类来完成。抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法。抽象类表示的是“is-a”关系,接口着重表示的是“can-do”关系。

(2) abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承。但是,一个类却可以实现多个interface,接口可以解决多重继承问题。

(3) 接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种只包含常量与抽象方法的特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口里面不能有私有的方法或变量,是用于让别人使用的,接口中的所有常量必须是public static final,且必须给其初值,其实现类中不能重新定义,也不能改变其值。接口中的方法必须是public abstract,这是系统默认的,不管你在定义接口时,写不写修饰符都是一样的。抽象类中是可以有私有方法或私有变量的,抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

(4) 实现抽象类和接口的类必须实现其中的所有方法。在抽象类中可以有自己的数据成员,也可以有非abstarct的成员方法。而在interface中,只能够有静态的不能被修改的数据成员,所有的成员方法都是abstract的。实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法。一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

2.区分接口与抽象类分别在什么场合使用?

如果预计要创建类的多个版本,则创建抽象类。抽象类提供简单的方法来控制类版本。 如果创建的功能将在大范围的异类对象间使用,则使用接口。 如果要设计小而简练的功能块,则使用接口。

如果要设计大的功能单元,则使用抽象类。如果要向类的所有子类提供通用的已实现功能,则使用抽象类。

抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。 抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。 接口多定义对象的行为;抽象类多定义对象的属性;

3.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法? 一个类使用关键字implements实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。

4.对于以下程序,运行“java StaticTest”,得到的输出结果:

public class StaticTest { static {

System.out.println(“Hi there”); }

public void print() { System.out.println(“Hello”); }

public static void main(String args []) { StaticTest st1 = new StaticTest(); st1.print();

StaticTest st2 = new StaticTest(); st2.print(); } } 答案: Hi there Hello Hello

5.编写程序,要求创建一个抽象类Father,其中有身高、体重等属性及爱好(唱歌)等方法,创建子类Son类继承Father类,并增加性格这个属性,改写父类的方法(爱好)。 public class test {

public static void main(String args[]) {

Son son = new Son(“乖儿子“,1.78f,61f, ”篮球“); son.showInfo(); son.singsong(); } }

abstract class Father { float high,weight; protected String name;

Father(String name,float high,float weight) { this.name = name; this.high=high;

this.weight=weight; }

abstract void singsong(); abstract void showInfo(); }

class Son extends Father { String specialty;

Son(String name, float high,float weight,String specialty) { super(name,high,weight); this.specialty = specialty; }

void singsong(){

System.out.println(name+”is singging loudly!”); }

void showInfo() {

System.out.println(“姓名:“+name+”;身高:“+high+”;体重:“+weight+”;爱好:“+specialty); } }


JAVA面试题2(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《企业和公司法》模拟题1-4及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: