Java中抽象类和接口的使用方法及区别
1.抽象类和接口
抽象类和接口为我们提供了实现类的公共行为规范,在继承它们时对里面的抽象方法进行重写就可以了。
抽象类:包含抽象方法和普通方法,抽象方法只需要声明就可以了,不需要写出方法体,此外,抽象类不可以被实例化,但可以有构造器,在下面的代码中我们会看到。抽象类用abstract定义,实现用extends。声明的抽象方法必须被实现。
接口:接口中方法默认的都是抽象方法,修饰符为public,实现时的方法要用public来修饰,数据成员一旦被定义必须被初始化,且不能够被修改,相当于static和final的结合;一个类可实现多个接口。但只能继承一个类。接口用interface定义,实现用implements。接口中的所有方法必须被实现。
2.代码实现
interface B{ int b=2;//数据成员必须被初始化 void playB();//默认为public,abstract类型 void printB(); } interface C{ int c=3; void playC(); void printC(); } abstract class A{ A(){ //抽象类中可以有构造器 System.out.println("A():"); } abstract void play();//抽象方法申明 void print(){ //普通方法 System.out.println("A:print()"); } } public class Abstract extends A implements B,C{ //实现一个抽象类,两个接口 //实现抽象类A中方法 public void play(){ //本身类中的方法 System.out.println("Abstract:play()"); } //实现接口B中的方法 public void playB(){ System.out.println("Abstract:playB()"); } public void printB(){ System.out.println("Abstract:printB()"); } //实现接口C中的方法 public void playC() { System.out.println("Abstract:playC()"); } public void printC() { System.out.println("Abstract:printC()"); } //输出接口中的数据成员值 void Abstractprint(){ System.out.println("Abstract:print()"+b+" "+c); } public static void main(String args[]){ Abstract a=new Abstract(); a.play(); a.print(); a.playB(); a.printB(); a.playC(); a.printC(); a.Abstractprint(); } }
3.实现结果显示: