Java接口和抽象类(超详细)

文章内容仅代表个人理解,如有错误欢迎到评论区指点,文章内容仅供参考——


本篇对java中的"抽象类和接口"进行详细的讲解

本期会分成一下三部分进行讲解:

  1. 抽象类的创建、使用、注意事项。
  2. 接口的创建、使用、和类的区别。
  3. 抽象类和接口的意义。

目录:

一、抽象类

1.创建一个抽象类

2.添加一些方法和一些常量

3.使用这个抽象类

4.添加构造方法

5.总结:抽象类的意义

抽象类定义了一种类型:

提供了代码重用的机制:

用于类的层级结构设计:

实现了部分的多态性:

二、接口

1.创建一个接口

2.添加一些常量和方法

3.使用这个接口

4.接口的扩展

5.一个类只能继承一个,那一个类可以实现几个接口呢?

6.总结:接口

定义了一种契约:

实现了多重继承:

解耦了实现和接口:

用于事件驱动和回调机制:

三、为什么要使用抽象类和接口?


抽象类

定义:抽象类是一种不能被实例化的类,用于声明方法但不实现它们。在Java中,通过abstract关键字定义抽象类,它可以包含抽象方法和具体方法。

1.创建一个抽象类

在class前面写入abstract关键字即可;

2.添加一些方法和一些常量

3.使用这个抽象类

这个抽象类是不能被实例化的

我们用一个子类来继承这个抽象类

用extends继承没忘了吧,哈哈到这里是个重点哦,你看这个编译失败了,为啥呢?

答:“在Java中子类继承的抽象类后,子类必须重写抽象类中的所有抽象方法”

我们再向抽象类中添加一个抽象方法,看看是不是必须要实现全部的抽象方法才行!

哈哈记住哦,必须重写抽象类中的抽象方法!

4.添加构造方法

子类要在自己的构造方法中帮助父类实现构造;

5.总结:抽象类的意义

  1. 抽象类定义了一种类型

    • 抽象类本身不能被实例化,但可以子类继承
    • 它提供了一种模板或者规范,子类需要实现其中的抽象方法,从而完善具体的行为。
  2. 提供了代码重用的机制

    • 抽象类可以包含普通方法和具体实现,子类可以直接继承这些方法。
    • 可以通过抽象类来定义一些通用的行为,避免重复编写代码
  3. 用于类的层级结构设计

    • 抽象类通常用于表示一类对象的共同特征,它们的子类通过继承和实现抽象方法来具体化这些特征。
  4. 实现了部分的多态性

    • 抽象类可以包含抽象方法,子类必须实现这些方法,从而允许不同子类表现出不同的行为。

接口

定义: 接口是一种抽象的数据类型,它定义了一组方法但没有实现这些方法。在Java中,接口通过interface关键字来定义,所有方法默认是public abstract的,并且所有变量字段默认是public static final的。

1.创建一个接口

也可以

2.添加一些常量和方法

接口中只能添加常量否则

那为什么会有定义中说的默认权限嗯?我们加上看看呢!

我们发现加上后的权限全部都是黑色的,说明接口中的方法和变量变量字段的权限是有默认值的。

3.使用这个接口

4.接口的扩展

接口继承其他接口的抽象方法,实现接口的扩展,红色问题部分是刚才使用接口的类还没有重写sleep方法。

这样就好啦!

5.一个类只能继承一个,那一个类可以实现几个接口呢?

我们再加几个接口,再实现一下

哈哈都可以实现耶!

6.总结:接口

  1. 定义了一种契约

    • 接口定义了一组方法的签名(方法名、参数和返回类型),但没有具体实现。
    • 它描述了对象应该具备的行为,而不关心具体实现方式。
  2. 实现了多重继承

    • 类可以实现多个接口,从而达到多重继承的效果。
    • 这种灵活性使得接口在组合不同行为时特别有用。
  3. 解耦了实现和接口

    • 接口允许代码依赖于抽象类型,而不是具体实现类,从而增强了代码的灵活性和可维护性。
    • 使用接口可以使代码更容易扩展和修改,因为接口定义了规范。
  4. 用于事件驱动和回调机制

    • 在事件处理和回调中,接口可以定义处理事件或回调的方法,具体实现可以由不同的类来完成。

为什么要使用抽象类和接口?

  1. 提高代码的可读性和可维护性:抽象类和接口可以帮助我们更清晰地组织和设计代码结构,使其更易于理解和维护。
  2. 实现代码重用:抽象类和接口可以在不同的类中实现相同或相似的行为,从而避免重复编写代码,提高了代码的复用性
  3. 支持多态性:抽象类和接口是实现多态的重要工具,通过它们可以实现基于不同对象的统一调用接口方法,增加了程序的灵活性可扩展性
  4. 降低耦合度:接口将实现与接口分离,提供了更松散的耦合关系,使得代码模块化程度更高,便于单元测试和修改。

好啦看到这里想必您对Java有了新的认知和了解,如果对您有帮助的话请帮我点个一件三连谢谢!谢谢!谢谢!

我只是个初学者——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一条小鱼儿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值