java抽象类和接口

6 篇文章 0 订阅

一、抽象类

  • 概念:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  • 抽象类是用 abstract 修饰的类。
  • 用 abstract 修饰的方法称为抽象方法。
  • 在java中,含有抽象方法的类称为抽象类。
  • 抽象类不能定义对象。
  • 一般基类都可以作为抽象类而存在。
  • 抽象类不能调用抽象方法。
  • 抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类。
  • 如果子类不是抽象类,则必须覆写抽象类之中的全部抽象方法,否则子类也是抽象类。
abstract class Door{
    String name;
    public abstract void open();//抽象方法
    public abstract void close();
}
 class MyDoor extends Door{
//必须重写,不然该类还是抽象类
    @Override
    public void open() {
        // TODO Auto-generated method stub
    }
    @Override
    public void close() {
        // TODO Auto-generated method stub
    }
}

二、接口
接口部分出自java核心语法

  • 接口不是类,而是一组对类需求的描述,这些类要遵从接口描述的统一格式进行定义。定义一个接口用关键字 interface。
//比如
public interface a{……}
  • 接口是一种特殊的抽象类,在一个接口中,所有的方法为公开、抽象的方法,所有的属性都是公开、静态、常量。所以接口中的所有属性可省略修饰符:public static final,也只能用这三个修饰符。接口中所有的方法可省略修饰符:public abstract,因为这些都是默认存在的。
  • 实现接口用关键字 implements,所谓实现一个接口就是实现接口中所有的方法。
  • 一个类除了继承另一个类外(且只能继承一个类),还可以实现多个接口(接口之间用逗号分割); 接口可以实现变相的多继承;另外接口与接口之间也可以实现多继承。
  • 不能用“new 接口名”来实例化一个接口,但可以声明一个接口。
  • 接口的作用
    (1)、间接实现多继承。
    (2)、允许我们为一个类定义出混合类型。
    (3)、通过接口制定标准。
    (4)、解耦合作用:采用接口可以最大限度的做到弱耦合,将标准的实
    现者与标准的制定者隔离。

  • 注意点:
    (1)、一个文件只能有一个 public 接口,且与文件名相同。
    (2)、在一个文件中不能同时定义一个 public 接口和一个 public 类。
    (3)、接口与实体类之间只有实现关系,没有继承关系、抽象类与类之间只有继承关系没有实现关系。接口与接口之间只有继承关系,且允许多继承。
    (4)、接口可以不写 public,但在子类实现接口过程中public不可省略。

三、接口 VS 抽象类

1、接口中不能有具体的实现,但抽象类可以。
2、一个类要实现一个接口必须实现其里面所有的方法,而抽象类不必。
3、通过接口可以实现多继承,而抽象类做不到。
4、接口不能有构造方法,而抽象类可以。
5、实体类与接口之间只有实现关系,而实体类与抽象类只有继承关系,抽象类与接口之间既有实现关系又有继承关系。
6、接口中的方法默认都是公开抽象方法,属性默认都是公开静态常量,而抽象类不是。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值