究竟什么是抽象类和接口?他们之间的关系是什么?

在这里插入图片描述

👏大家好!我是和风coding,希望我的文章能给你带来帮助!
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝点击 我的主页 还可以看到和风的其他内容噢,更多内容等你来探索!
📕欢迎参观我的个人网站:Gentlewind

在这里插入图片描述


文章目录


抽象类和接口是 Java 中定义抽象类型的两种机制,他们之间有相似之处,但在使用场景上有一些区别。

抽象类

使用abstract关键字定义,可以用来定义类,也可以定义方法。

作用:它的作用就是用来捕捉对象的通用属性和行为,而具体的实现交由子类来进行

一个抽象类可以包含抽象方法和具体方法。

抽象方法:没有实现的方法,也就是没有代码块{}

具体方法:实现了的方法

就比如我们定义了一个动物抽象类。每个动物都会叫,但是每个动物发出的声音都不一样,因此在动物这个抽象类中,我们不去对发出声音这个方法进行具体的定义,而是交由继承了它的子类来进行具体的实现。

这样的好处就是抽取了通用的属性和行为,对其子类具有指导作用。我不关心你具体如何实现,我只制定总体框架。

就如同西游记,佛祖让唐僧师徒要经历九九八十一难,这就是一个抽象类,而具体是哪八十一难?交由菩萨来自己定义。

abstract class Animal {
    private String name;

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

    public String getName() {
        return name;
    }

    public abstract void makeSound(); // 抽象方法
}

class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    @Override
    public void makeSound() {
        System.out.println("Woof");
    }
}

接口

使用interface关键字定义。

主要用来定义一组方法,任何类实现该接口都必须实现接口中的所有方法(在Java 8及以后,接口也可以包含默认方法和静态方法)。

interface Flyable {
    void fly(); // 抽象方法
}

interface Swimmable {
    void swim(); // 抽象方法
}

class Duck implements Flyable, Swimmable {
    @Override
    public void fly() {
        System.out.println("Duck is flying");
    }

    @Override
    public void swim() {
        System.out.println("Duck is swimming");
    }
}

总结

抽象类: 适合用于表示一种“is-a”关系,作为基类捕捉子类的通用行为和状态。例如,Vehicle可以是一个抽象类,而CarTruck是它的子类。

接口:适合用于表示一种“can-do”关系,用来定义功能。例如,Serializable接口表示对象可以被序列化,而Runnable接口表示对象可以在某个线程中运行。

并且在 Java 中,每个子类只能集成一个抽象类,而一个类却可以实现多个接口。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值