Java学习笔记(抽象类&接口)

学习抽象类和接口的时候,问了牛冰一些问题,归纳了一下,就拿来当笔记用了

Q: java中接口的作用是否就相当于类的属性和方法列表? 

A: 接口在Java中是一种抽象类型,它定义了一组抽象方法,用来规范类的行为。接口可以被类实现,实现接口的类必须提供接口中声明的所有方法的具体实现。接口的作用有以下几点¹²³:

  • 接口可以提高代码的复用性,因为不同的类可以实现同一个接口,从而具有相同的行为。
  • 接口可以降低代码的耦合度,因为接口是一种契约,只要遵守了接口的规范,就可以实现不同类之间的交互。
  • 接口可以支持多态,因为接口类型的变量可以引用不同实现类的对象,根据对象的实际类型调用相应的方法。
  • 接口可以支持多继承,因为一个类可以实现多个接口,从而继承多个接口中的方法。
  • 接口并不是类的属性和方法列表,而是一种抽象设计,用来描述类应该具有什么样的能力。接口和类之间的关系是一种契约关系,而不是一种层次关系。

Q: 那就是说明书咯?

A: 你可以这么理解,接口就像是一本说明书,告诉你这个类能做什么,但不告诉你怎么做。具体的实现细节由类自己决定。



(1) Java 接口 | 菜鸟教程. https://www.runoob.com/java/java-interfaces.html.
(2) Java 中的接口有什么作用? - 知乎. https://www.zhihu.com/question/20111251.
(3) java接口和抽象类的区别和作用(功能、用途、好处) - 秋风 .... https://www.cnblogs.com/3020815dzq/p/8509137.html.
(4) Java中接口的作用,为什么要写接口? - CSDN博客. https://blog.csdn.net/qq_43345641/article/details/90006399.
(5) 接口有什么作用-Java基础-PHP中文网. https://www.php.cn/java/base/453258.html.

Q: 那抽象类一般用来干什么?接口呢?

A:抽象类和接口都是一种抽象的类型,用来定义一些公共的规范和行为,但是它们有一些区别和用途²³⁴:

  • 抽象类可以提供成员方法的实现细节,接口中只能存在public abstract方法, JDK1.8之后接口中可以定义static和default方法弥补了这一点⁴。
  •  抽象类中成员变量可以是各种类型的,而接口中只能是public static final⁴。
  • 抽象类可以有构造方法,接口不能有构造方法²³。
  • 抽象类可以被单继承,接口可以被多实现²³。
  • 抽象类和接口的用途不同,一般来说抽象类用来表示一种“是什么”的关系,即继承关系,例如猫是动物,教师是员工等;接口用来表示一种“能做什么”的关系,即功能或能力的抽象,例如飞行器可以飞行,可充电设备可以充电等。²³

(1) java接口和抽象类的区别和作用(功能、用途、好处) - 秋风 .... https://www.cnblogs.com/3020815dzq/p/8509137.html.
(2) 【Java SE】抽象类和接口 - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/2266336.
(3) Java中普通类、抽象类、接口三者的区别和联系 - CSDN博客. https://blog.csdn.net/G_x_n/article/details/114241659.
(4) Java中普通类、抽象类、接口三者的区别和联系 - CSDN博客.

https://bing.com/searchq=java+%e6%8a%bd%e8%b1%a1%e7%b1%bb%e5%92%8c%e6%8e%a5%e5%8f%a3%e7%9a%84%e5%8c%ba%e5%88%ab%e5%92%8c%e7%94%a8%e9%80%94.
(5) Java 8 中的抽象类和接口到底有啥区别? - 知乎专栏. https://zhuanlan.zhihu.com/p/267219949.

Q: 接口是否可以类比为一个树形结构的树干?

(我的本意是问的接口之间的继承关系,没表述清楚)

A: 不太准确。接口是一种抽象的类型,用来定义一些公共的规范和行为,它不是一个具体的实体,也不是一个层次结构。接口之间可以通过继承关系形成一个树形结构,但是这个结构只表示接口之间的继承关系,不表示接口本身的结构。接口本身没有树干或树枝的概念,只有方法和常量。而且接口之间的继承关系也不一定是单根的,一个接口可以继承多个接口,形成一个网状结构。

Q: 那也就是说,接口能构成一个网状结构,每个网点又能自己延伸,构成类之间的树形结构

A: 不完全正确。接口能构成一个网状结构,表示接口之间的继承关系,但是这个结构和类之间的树形结构是分开的,不是相互延伸的。类可以实现多个接口,表示类具备了多个接口的功能或能力,但是这并不影响类之间的继承关系。类之间的继承关系只取决于类和类之间的关系,而不取决于类和接口之间的关系。所以,接口和类之间的关系是一种“横向”的关系,而不是一种“纵向”的关系。

Q: 那就是说,在类的树形结构中,也许每个类都能和接口网状结构的网点相连?

A: 是的,理论上每个类都可以和接口网状结构的任意网点相连,表示类实现了接口的规范和行为。但是实际上,并不是每个类都需要和接口相连,也不是每个类都需要和多个接口相连。这取决于类的设计和需求,以及接口的功能和意义。一般来说,设计一个好的接口,应该遵循以下原则:

  • 接口应该尽可能地小而精,只定义一些必要的规范和行为,避免过多的方法或常量。
  • 接口应该具有一定的内聚性,即接口中的方法或常量应该有一定的相关性或逻辑性,不要混杂不相关的内容。
  • 接口应该具有一定的抽象性,即接口中的方法或常量应该是通用或抽象的,不要过于具体或细节化。
  • 接口应该具有一定的稳定性,即接口中的方法或常量应该尽量不变,避免频繁地修改或删除。
  • 接口应该具有一定的可扩展性,即接口中的方法或常量应该能够适应不同的场景或需求,避免过于局限或死板。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值