答:抽象类中能够包含方法体。抽象类的构成也能够彻底是包含方法体的普通方法,只不过这样并非抽象类最优的使用方式。java
题目解析:包含了方法体的抽象类示例代码以下:设计
abstract class AbstractAnimal { public void run() { System.out.println("AbstractAnimal Run."); } } class Animal extends AbstractAnimal { public static void main(String[] args) { AbstractAnimal animal = new Animal(); animal.run(); } }
以上代码执行的结果是: AbstractAnimal Run.
code
答:抽象类不能被实例化,由于抽象类和接口的设计就是用来规定子类行为特征的,就是让其余类来继承,是多态思想的一种设计体现,因此强制规定抽象类不能被实例化。继承
答:抽象方法不能使用 private 修饰,由于抽象方法就是要子类继承重写的,若是设置 private 则子类不能重写此抽象方法,这与抽象方法的设计理念相违背,因此不能被 private 修饰。接口
abstract class AbstractAnimal { static String animalName = "AbstractAnimal"; // 添加代码处 }
A:protected abstract void eat(); B: void eat(); C:abstract void eat(){}; D:animalName += "Cat";内存
答:A编译器
题目解析:选项 B 普通方法必须有方法体;选项 C 抽象方法不能有方法体;选项 D 变量赋值操做必须在方法内。编译
A:抽象类中的方法必须所有为抽象方法 B: 抽象类中必须包含一个抽象方法 C:抽象类中不能包含普通方法 D:抽象类中的方法能够所有为普通方法(包含方法体)class
答:D变量
题目解析:抽象类中能够没有方法或者所有为普通方法,都是容许的,以下代码所示:
abstract class AbstractAnimal { public void run() { System.out.println("AbstractAnimal Run."); } } class Animal extends AbstractAnimal { public static void main(String[] args) { AbstractAnimal animal = new Animal(); animal.run(); } }
程序执行的结果为:AbstractAnimal Run.
答:在 Java 语言设计中,接口不是类,而是对类的一组需求描述,这些类必需要遵循接口描述的统一格式进行定义。
答:JDK 8 以前接口不能有方法体,JDK 8 以后新增了 static 方法和 default 方法,能够包含方法体。
interface IAnimal { static String animalName = "Animal Name"; } class AnimalImpl implements IAnimal { static String animalName = new String("Animal Name"); public static void main(String[] args) { System.out.println(IAnimal.animalName == animalName); } }
答:执行的结果为 false。
题目解析:子类使用 new String… 从新建立了变量 animalName,又由于使用 == 进行内存地址比较,因此结果就是 false。
答:抽象类和接口的区别,主要分为如下几个部分。
A:抽象方法能够是静态(static)的 B:抽象方法可同时是本地方法(native) C:抽象方法能够被 synchronized 修饰 D:以上都不是
答:D
题目解析:抽象方法须要被子类重写,而静态方法是没法被重写的,所以抽象方法不能被静态(static)修饰;本地方法是由本地代码实现的方法,而抽象方法没有实现,因此抽象方法不能同时是本地方法;synchronized 和方法的实现细节有关,而抽象方法不涉及实现细节,所以抽象方法不能被 synchronized 修饰。