抽象类和接口 面试题
1.添加以下哪个选项不会引起编译器报错?
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 变量赋值操作必须在方法内。
{方法体}
2.执行以下代码会输出什么结果?
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。
内存地址不一样