2.1.3抽象类和接口

抽象类

如何定义抽象方法:需要使用一个关键词:abstract

abstract class Person {
    public abstract void run();
}

特点:无法实例化抽象类。

Person p = new Person(); // 编译错误

继承了抽象类的子类必须实现所有抽象类中的方法。

接口

如果一个抽象类没有属性只有方法,则可以将其定义为接口。
接口比抽象类还要抽象。因此接口中所有方法都是抽象方法
如何定义接口:使用关键字interface

interface Person {
    void run();
    String getName();
}

如何实现接口:使用关键字implements

class Student implements Person {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        System.out.println(this.name + " run");
    }

    @Override
    public String getName() {
        return this.name;
    }
}

一个子类只能有一个父类,但一个类可以实现多个接口。

接口与接口之间的继承

interface Hello {
    void hello();
}

interface Person extends Hello {
    void run();
    String getName();
}

default关键字:
在接口中,没有关键字修饰的都是抽象方法,都不能实现。
如果要实现接口中的方法,需要用default关键字。

interface Person {
    String getName();
    default void run() {
        System.out.println(getName() + " run");
    }
}

实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。

抽象类和接口的区别

  1. 继承:接口可以实现多个子类。但抽象类只能有一个子类。
  2. 字段(属性):接口没有属性只有方法。抽象类可以有属性。
  3. 抽象方法:接口和抽象类中都有抽象方法,且抽象方法不能实现,但在继承的类中需要覆写。
  4. 非抽象方法:在接口中可以定义default方法,此方法可以进行实现,并且可以不用覆写。在抽象类中可以定义非抽象方法,可以实现,非抽象方法都可以不用覆写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值