Java -- 抽象类 & 接口

1、抽象类

直接上代码…

// 抽象类
public abstract class Action {

    // abstract: 抽象方法,没有方法体,只有方法名
    public abstract void run();

    public void doSomething(){
        System.out.println("doing something...");
    }
}
public class Student extends Action {
    // 抽象类的抽象方法,继承的子类必须实现其抽象方法
    @Override
    public void run() {
        // 必须重写Action类中的抽象方法
    }
}

为什么需要抽象类?

  • 在某些情况下,父类知道子类应该包含怎样的方法,但是无法准确知道这些子类如何实现这些方法。例如定义一个Shape类,这个类应该提供一个计算周长的方法,但是不同的Shape子类对周长的计算方法不一样,此时需要用到抽象类。

  • 虽然有些情况可以对对象进行强制类型转换,但是这降低了程序的灵活性。

  • 使用抽象方法应该满足的要求:抽象方法只有方法的签名,没有方法实现的方法。


2、接口

接口的概念

  • 接口是从多个相似类中抽象出来的规范,接口不提供任何方法。接口体现的是规范和实现分离的设计哲学。

  • 接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类中必须提供某些方法,提供这些方法的类就可满足实际需要。

直接上代码…

// 定义一个接口,接口都需要有个实现类
public interface UserService {

    // 接口中所有的方法都是抽象的 -- public abstract
    void add();      // 增
    void delete();   // 删
    void update();   // 改
    void query();    // 查
}
public interface TimeService  {
    void timer();
}
// 接口的实现类 -- 可以实现多个接口
public class UserServiceImpl implements UserService, TimeService {

    // 实现了接口的类,就必须重写接口的所有方法
    @Override
    public void add() {

    }

    @Override
    public void delete() {

    }

    @Override
    public void update() {

    }

    @Override
    public void query() {

    }

    @Override
    public void timer() {

    }
}

3、抽象类与接口的对比

抽象类

  • 类 --> abstract
  • 方法 --> public abstract

接口

  • 接口 --> interface
  • 类 --> implements
  • 方法 --> public abstract
  • 接口不能被实例化,接口中没有构造方法
  • implements可以实现多个接口
  • 必须要重写接口中的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值