抽象类与接口

抽象类

没有实际工作的方法称为抽象方法,包含抽象方法的类称为抽象类

abstract class shape {
    abstract public void draw();//抽象方法没有方法体,不执行具体的代码
}
  1. 抽象类不能直接实例化
    在这里插入图片描述

  2. 抽象类和普通类区别是多了一个抽象方法

  3. 普通类继承抽象类,普通类需要重写抽象类中的抽象方法

  4. 抽象方法一定要被重写。

  5. 抽象方法的访问修饰限定符不能是private

  6. 抽象类中可以包含非抽象方法和字段在这里插入图片描述
    抽象类存在的意义:继承。要想使用抽象类子类重写抽象类中的抽象方法。

接口

接口是比抽象类的“升级版”抽象类中可以包含非抽象方法和字段,但是接口中包含的方法都是抽象方法,字段只能包含静态常量

interface Shape {

    void draw();
}

class cycle implements Shape {
    @Override
    public void draw() {
        System.out.println("画○");

    }
}
  • 使用关键字interface定义接口
  • 接口中的方法一定是抽象方法,可省略abstract
  • 及口中的方法一定是public,可省略public
  • cycle implements Shape 代表实现
  • 在调用的时候同样可以创建一个接口的引用,对应到一个子类的实例
Shape shape = new cycle();
  • 接口不能被单独实例化
  • 接口中只能包含静态常量
  • 接口也可以发生 多态.

实现多个接口

interface  A{
    void A();
}

interface B{
    void B();
}

interface C extends A,B{
    void C();
}
class  D implements  C{
  
    @Override
    public void A() {
        
    }

    @Override
    public void B() {

    }

    @Override
    public void C() {

    }

}
  • 接口之间可通过extends关键字进行“扩展”
  • 如上 接口C扩展了A,B, 类D实现了接口C,不仅要重写C中的方法,也要重写A和B中的方法
  • 接口的出现弥补了java不能实现多继承的缺陷
  • jdk 1.8新特性 default修饰接口中的方法可以指定方法体

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值