抽象类和接口的区别
抽象类可以包含抽象方法和非抽象方法,而接口只能包含抽象方法。抽象类会被继承,而接口会被实现。阅读本文以了解抽象类和接口之间的其他区别,以及它们在实际程序中的使用方式。
什么是抽象类?
抽象类充当一个模板,存储程序的方法和数据成员。当您预计不同的子类将继承具有相同方法和字段的抽象类时,应该使用抽象类。
抽象类可以包含或不包含抽象方法,即没有方法体的方法。但是,如果一个类至少包含一个抽象方法,则该类必须声明为抽象类。
抽象类不能被实例化,但可以被继承。要使用抽象类,您必须从另一个类继承它,并在其中提供抽象方法的实现。您必须使用关键字**abstract**来创建抽象类或抽象方法。
抽象方法
抽象方法在基类中没有任何代码;代码将在其派生类中添加。如果您继承一个抽象类,则必须为其中的所有抽象方法提供实现。如果不这样做,则子类也必须声明为抽象类。
扩展抽象类
这是一个包含抽象方法和非抽象方法的抽象类的简单 Java 程序示例:
示例
// abstract class abstract class Calculator{ // abstract method abstract int add (int a, int b); // non-abstract; method with implementation int mul (int a, int b){ return a*b; } } // Inheriting the abstract class class Sum extends Calculator{ public int add (int a, int b){ return a+b; } } public class test{ public static void main (String []args){ Calculator obj = new Sum(); System.out.println("The sum is: " + obj.add(2,3)); System.out.println("The multiplication is: " + obj.mul(2,3)); } }
输出
它将产生以下输出:
The sum is: 5 The multiplication is: 6
什么是接口?
接口是 Java 中的一种引用类型。它类似于类。它是一组抽象方法的集合。一个类**实现**一个接口,从而继承接口的抽象方法。
除了抽象方法之外,接口还可以包含常量、默认方法、静态方法和嵌套类型。只有默认方法和静态方法才具有方法体。
编写接口类似于编写类。但是类描述对象的属性和行为。而接口包含类实现的行为。
除非实现接口的类是抽象类,否则接口的所有方法都需要在类中定义。
接口在以下方面类似于类:
接口可以包含任意数量的方法。
接口以**.java**扩展名写入文件,接口名称与文件名匹配。
接口的字节码出现在**.class**文件中。
接口出现在包中,其相应的字节码文件必须位于与包名称匹配的目录结构中。
接口在几个方面不同于类,包括:
您不能实例化接口。
接口不包含任何构造函数。
接口中的所有方法都是抽象的。
接口不能包含实例字段。接口中唯一可以出现的字段必须同时声明为**static**和**final**。
接口不会被类扩展;它会被类实现。
一个接口可以扩展多个接口。
接口具有以下属性:
接口隐式地是抽象的。在声明接口时,不需要使用**abstract**关键字。
接口中的每个方法也隐式地是抽象的,因此不需要**abstract**关键字。
接口中的方法隐式地是公共的。
实现接口
**interface**关键字用于声明接口。以下是如何在 Java 中声明和实现接口的一个简单示例:
示例
// Declaring the Interface interface Animal { public void eat(); public void travel(); } // Implementing the Interface public class MammalInt implements Animal { public void eat() { System.out.println("Mammal eats"); } public void travel() { System.out.println("Mammal travels"); } public int noOfLegs() { return 0; } public static void main(String args[]) { MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
输出
它将产生以下输出:
Mammal eats Mammal travels
结论
抽象类和接口是面向对象编程中的重要概念。在这里,我们使用 Java 编程示例来突出抽象类与接口的不同之处,以及开发人员如何使用这些概念。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP