实例详解抽象类和接口的区别

Java的一大特性就是抽象,其中抽象包括属性抽象和方法抽象,由于java没有多重继承的性质,于是引进了接口的概念。这篇文章通过一些实例来详细介绍抽象类和接口的区别。

1.定义

抽象类:如果一个类中有抽象方法,那么这个类就是抽象类,抽象类的关键字是Abstract,如下代码所示:

public abstract class AbstractClass {
public abstract void testAbstract();//没有方法体
public void testClass(){//传统方法,带有方法体
System.out.println("Traditional Function");
}
}

接口:接口是一种支持抽象定义的机制,是一个方法的集合,接口中的方法是没有方法体的,接口的关键字是interface,如下代码所示:

public interface TestInterface {
public void testInterface();//没有方法体
public static final int a=10;//接口中定义的成员变量默认为Public static final,只能够有静态的不能被修改的数据成员
}

2.两者之间的异同

相同点:两者都是一种实现抽象的机制,都不能实例化对象,若想实例化只能通过继承抽象类的子类和实现接口的子类。

不同点:1.接口只有定义,没有方法实现,如代码所示没有方法体。抽象类可以有抽象方法,此方法没有方法体,也可以有传统的具有定义和实现的方法。

2.接口需要实现,抽象类是继承,分别对应的关键字是implements和extends。

3.接口可以多重实现,而抽象类只能单一继承。如下代码所示:


public class Test extends AbstractClass implements TestInterface,TestInterface2  {
//单一继承抽象类,多重继承接口
@Override
public void testInterface() {
// TODO Auto-generated method stub

}

@Override
public void testInterface2() {
// TODO Auto-generated method stub

}

@Override
public void testAbstract() {
// TODO Auto-generated method stub

}

}

综上所述:接口就是一种特殊形式的抽象类,使用接口完全是有可能实现与抽象类相同的操作,在实际开发使用的过程中,一般情况下使用接口的比较多~

猜你喜欢

转载自blog.csdn.net/horero/article/details/78356388