abstract类和接口interface的联系和区别

来源:互联网 发布:周朝知乎 编辑:程序博客网 时间:2024/04/28 07:47

一,用关键字abstract类修饰的类称为abstract类(抽象类)。
abstract class A{
………….
}
特点:
1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不允许实现,而且不允许使用final和abstract同时修饰一个方法。

 abstract class A{      abstract int min (int x,int y);      int max(int x,int y){          return x>y?x:y;      }}

2.抽象类不能用new运算符创建对象。如果一个非抽象类是某个类的子类,那么它必须重写父类的抽象方法,给出方法体。

 abstract class A{      abstract int sum(int x,int y);      int sub(int x,int y){          return x-y;      }}class B extends A{   int sum(int x,int y){//子类必须重写父类的sum方法          return x+y;        }}

抽象类只关心操作,即只关心方法的名字,类型以及参数,不关心这些操作是怎么实现的,即不关系方法体。设计程序时,可以把几个类的共有的轮廓,重要特征抽象成一个抽象类,不需要关心具体细节。

二,java不支持多继承的,一个类只能继承一个父类,但是java引入了接口机制,一个类可以实现多个接口。

interface A{    public final int a=10;    public abstract void sum(int x,int y);    public abstract void sub(int x,int y);}class B implements A{//使用implements来实现A接口      void sum(int x,int y){        return x+y;      }       void sub(int x,int y){//必须重写A接口的所有抽象方法        return x-y;      }    }

特点:
1.接口体类只能有常量和抽象方法,即方法都是等待实现的方法。
2,一个类实现了某个接口,必须重写该接口的所有方法
3.多个类可以实现同一个接口,一个类可以实现多个接口。
三,比较
1.接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
2.一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口),人是根源,吃饭,走路时接口。
3.一个类可以实现多个接口,因为一个对象的动作有很多,但是只能继承一个类,因为一个对象的根,本质只有一个。
4.接口中所有的方法都是抽象的,没有一个有程序体。抽象类是可以有非抽象方法。抽象类和接口中的抽象方法都不实现。

0 0
原创粉丝点击