抽象类和接口

28. 选项中哪一行代码能够替换题目中//add code here而不产生编译错误?()spa

复制代码
public abstract class MyClass {
public int constInt = 5; //add code here public void method() { } }
复制代码

Apublic abstract void method(int a);设计

B constInt = constInt + 5;code

C public int method();对象

D public abstract void anotherMethod() {}blog

答案:A继承

解析:考察抽象类的使用。接口

抽象类遵循的原则:it

(1)abstract关键字只能修饰类和方法,不能修饰字段。
(2)抽象类不能被实例化(没法使用new关键字建立对象实例),只能被继承。
(3)抽象类能够包含属性,方法,构造方法,初始化块,内部类,枚举类,和普通类同样,普通方法必定要实现,变量能够初始化或不初始化但不能初始化后在抽象类中从新赋值或操做该变量(只能在子类中改变该变量)。
(4)抽象类中的抽象方法(加了abstract关键字的方法)不能实现。
(5)含有抽象方法的类必须定义成抽象类。
 
扩展:抽象类和接口的区别,作个总结吧:

(1)接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是能够有私有方法或私有变量的。编译

(2)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。可是,一个类却能够实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的做用。class

(3)在abstract class 中能够有本身的数据成员,也能够有非abstarct的成员方法,而在interface中,只可以有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中通常不定义数据成员),全部的成员方法默认都是 public abstract 类型的。

(4)abstract class和interface所反映出的设计理念不一样。其实abstract class表示的是"is-a"关系,interface表示的是"has-a"关系。

(5)实现接口的必定要实现接口里定义的全部方法,而实现抽象类能够有选择地重写须要用到的方法,通常的应用里,最顶级的是接口,而后是抽象类实现接口,最后才到具体类实现。抽象类中能够有非抽象方法。接口中则不能有实现方法。

(6)接口中定义的变量默认是public static final 型,且必须给其初值,因此实现类中不能从新定义,也不能改变其值。抽象类中的变量默认是 friendly 型,其值能够在子类中从新定义,也能够在子类中从新赋值。

相关文章
相关标签/搜索