抽象类(abstract class)和接口(interface)Java面试题
Posted 蓝盒子itbluebox
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类(abstract class)和接口(interface)Java面试题相关的知识,希望对你有一定的参考价值。
一、抽象类(abstract class)和接口(interface)有什么异同?
不同点:
● 抽象类中可以定义构造器,接口不能;
abstract class A{
public A(){
}
}
interface B{
public B(){
}
}
● 抽象类可以有抽象方法和具体方法,接口不能有具体方法;
● 接口中的成员全都是 public 的,抽象类中的成员可以使用private、public、protected、默认等修饰;
● 有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法;
● 一个类只能继承一个抽象类,一个类可以实现多个接口;
相同点:
● 不能够实例化;
即使抽象类有构造方法也不行
● 可以将抽象类和接口类型作为引用类型;
● 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类;
abstract class A{
public abstract void a();
public abstract void a1();
public void a2(){
}
}
interface B{
void b();
void b1();
}
public class Test extends A implements B {
@Override
public void a() {
}
@Override
public void a1() {
}
@Override
public void b() {
}
@Override
public void b1() {
}
}
或者
abstract class A{
public abstract void a();
public abstract void a1();
public void a2(){
}
}
interface B{
void b();
void b1();
}
public abstract class Test extends A implements B {
}
二、抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法(native),是否可同时被 synchronized?
都不能。
● 抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。
● 本地方法是由本地代码(如 C++ 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。
● synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。
以上是关于抽象类(abstract class)和接口(interface)Java面试题的主要内容,如果未能解决你的问题,请参考以下文章
在谈PHP中的 抽象类(abstract class)和 接口(interface)
抽象类(abstract class)和接口(interface)Java面试题
Java中抽象类和接口的区别(abstract class VS interface)
抽象类(abstract class)和接口(interface)相同点及不同点说明