栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java查漏补缺5

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java查漏补缺5

Java查漏补缺5
      • 抽象类可以有静态方法
      • 静态与抽象不能共存于方法上
      • 抽象静态方法无意义(不存在)
    • 抽象类中访问权限
    • 接口与抽象类的区别
    • 缺省适配模式

抽象类可以有静态方法

静态方法是依赖于类而存在的,静态方法只要有字节码存在就可以运行。

静态与抽象不能共存于方法上

静态属于字节码,不需要对象就可以运行,而抽象方法没有方法体,运行没有意义,二者不能共存。

抽象静态方法无意义(不存在)

抽象类中可以定义静态方法(但抽象类不能实例化),定义的这个静态方法实际上是帮自己的子类(实现类)定义的。
抽象类中没有抽象静态方法,因为抽象静态方法不存在。

抽象类中访问权限

抽象类中方法为abstract时只有public,protected,default三种访问权限。
接口中所有方法的访问属性为public, 即接口中的方法自动默认为 public,所以实现接口中的方法必须标识为public 或者 abstract,否则编译出错。
在JAVA 8 或者更高的版本中的可以使用default
接口中抽象类常量(public static final)抽象方法(public abstract)

接口与抽象类的区别
  1. Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以。(就是interface中只能定义方法,而不能有方法的实现,而在abstract class中则可以既有方法的具体实现,又有没有具体实现的抽象方法)。
    如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行。
  2. 一个抽象类的实现只能由这个抽象类的子类给出,Java的单继承性导致抽象类作为类型定义工具的效能大打折扣。
    任何一个实现了一个接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个接口,从而这个类就有了多种类型。
    使用抽象类,那么继承这个抽象类的子类类型就比较单一,因为子类只能单继承抽象类;而子类能够同时实现多个接口,因为类型就比较多。接口和抽象类都可以定义对象,但是只能用他们的具体实现类来进行实例化。
缺省适配模式

A extends AbstractB implements interfaceC
A既可以选择实现implement接口interfaceC中的方法,也可以选择不实现;A既可以选择重写Override抽象类AbstractB中的方法,也可以选择不重写。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号