在抽象类中可以没有抽象方法_是否可以在最终课程中使用抽象方法?

在抽象类中可以没有抽象方法

这是最近在Java开发人员工作面试的电话面试中向我的一位读者提出的有趣的Java核心问题之一。 即使他知道你
无法用Java将抽象类定型为final ,他对方法的措辞感到困惑。 答案很简单,不,在Java的最终类中不可能有抽象方法。 为什么? 因为一旦在Java类中声明抽象方法,该类就会自动变为抽象类,并且您无法像前面所讨论的那样在Java中将抽象类定为final ,因此,在Java的final类中不可能有抽象方法。

正如我说过的那样,许多Java程序员对这个问题的措辞感到困惑,就像我说的那样,即使是被问到这个问题的读者也很熟悉这个概念,他并没有意识到,只要您在其中声明了一个抽象方法就可以了。一个类,它将成为一个抽象类,并且不可能在Java中将抽象类定型为final。

这是一条丢失的信息,或者您称其为把它与更流行和常见的问题分开的把戏,是否可以在Java中声明一个抽象类和final类 ?

让我们看一个代码示例,以证明这一点,即您无法在最终类中声明抽象方法。 我们有一个名为Hello的公共最终类,该类中有一个名为print()的抽象方法。
Hello.java文件。

public final class Hello {public abstract print();}

在Eclipse IDE中键入该命令后,将立即收到以下错误消息:

Hello类型必须是抽象类才能定义抽象方法

这是另一个屏幕快照,显示您在Java的最终类中不能拥有抽象方法:

当您在记事本中写下此代码并从命令行窗口使用javac对其进行编译时 ,情况也是如此。 根据Java规范,一旦在类中声明了抽象方法,该方法便自动成为抽象类,并且由于无法在Java中将抽象类定型为最终类,因此编译器将引发错误。

Java中的顶级类或嵌套类均是如此。 即使在嵌套的最终类上声明抽象方法 ,您也会收到相同的错误。

关于此主题的另一个后续问题是,抽象类可以在Java中具有静态方法吗? 答案是肯定的,在Java中的抽象类中声明静态方法没有问题,因为您无需实例化类即可使用静态方法,只需使用类名即可调用它们。

我们可以修改代码示例,使其在Hello类中包括main()方法 ,该类是Java中的静态方法,如下所示:

public abstract class Hello {public abstract void print();public static void main(String args[]) {.. some code here}}

您可以看到没有编译时错误。 代码可以很好地编译,因此在Java 抽象类中声明静态方法是完全可以的。

这就是关于是否可以在最终类中使用抽象方法的全部内容 正如我说的那样,这是不可能的,因为一旦您在类内部创建了抽象方法,按照Java规范,该类就会自动成为抽象类。 由于您无法使用Java将最终类抽象化,因此这变得非法,并且编译器会通过抛出错误来禁止这样做。 但是,是的,您可以在最终类和抽象类上都声明静态方法,这没有问题。 如果您正在学习Java,建议您进一步阅读
不耐烦的Core Java让您熟悉诸如抽象和最终类之类的核心概念。 它还涵盖了Java 8。

其他相关Java面试问题的练习

  1. 抽象类可以在Java中具有构造函数吗? ( 回答 )
  2. 您可以在Java中覆盖静态方法吗? ( 回答 )
  3. 您可以重载Java中的静态方法吗? ( 回答 )
  4. 您可以在Java中运行没有main()方法的程序吗? ( 回答 )
  5. 您可以覆盖Java中的私有方法吗? ( 回答 )
  6. 您可以重载和覆盖Java中的main()方法吗? ( 回答 )
  7. 您可以在Java中使数组易变吗? ( 回答 )
  8. 您可以在Java中声明一个静态类吗? ( 回答 )

进一步阅读

Java编程面试公开

Head First Java第二版

感谢您阅读本文,如果您喜欢这个核心Java面试问题和我的解释,请与您的朋友和同事分享。

翻译自: https://www.javacodegeeks.com/2017/07/possible-abstract-method-final-class.html

在抽象类中可以没有抽象方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python二维列表排序_使用Python按顺时针方向排序二维坐标列表?

这应该说明问题,给出一个可视化工具 但对于在同一距离上获得一组点的正确入口点来说,这并不总是有效的import random import pylab import cmath from itertools import groupby pts [(random.randrange(-5,5), random.randrange(-5,5)) for _ in range…

微型计算机生产工艺,bb肥生产设备制造工艺流程

原标题:bb肥生产设备制造工艺流程BB肥生产设备与有机肥设备相比较而言设备相对简单,因而BB肥便具有投资小的优点,而且因其配方灵活,非常适合我国正在推广的测土配方肥的需要,是一种非常适合我国国情的肥料。在发达国家…

devc++鼠标变成了光标_Excel填充别再用鼠标拖拉了!用这4个方法,效率至少高10倍!...

Hello,各位叨友们好呀!我是叨叨君~根据下表对照一下自己,在Excel中需要批量填充公式的时候,你是不是还在用鼠标拖拉的方法,将光标放在单元格的右下角,然后按鼠标左键,向下拖动,填充完…

运动基元_开发人员的新分布式基元

运动基元面向对象的基元(进程内基元) 作为Java开发人员,我非常熟悉面向对象的概念,例如类,对象,继承,封装,多态性等。除了面向对象的概念之外,我还非常熟悉Java运行时。它…

html5网站 500.19错误,WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?如何解决?...

WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?如何解决?作者:兴邦开发部人气:发表时间:2015年05月18日[文章内容简介]:WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?…

网络位置可以看到另一个人的电脑_计算机组成原理(一)- 冯·诺依曼体系结构...

1 计算机的基本硬件组成早期,DIY一台计算机,要先有三大件CPU内存主板1.1 CPU计算机最重要的核心配件,中央处理器(Central Processing Unit)。计算机的所有“计算”都是由CPU来进行的。CPU是一个超级精细的印刷电路版1.2 内存(Memory)你撰写的程序、打开的…

vaadin_Vaadin提示:以声明方式构建UI

vaadin如果您使用过GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用。 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处。 Vaadin提供了多种开箱即用的工具和组件,用于构建复杂且美观的UI。 其中之一是可以像UiBinder那…

关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序

本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码。 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorld程序。 使用Python Shell 进入Python Shell可以通过交互…

neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图

neo4j 显示名字在过去的几天里,我一直在关注DHH发起的有关“我的名字是……”的推文。 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好,我叫大卫。 我不会在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语…

Final Cut Pro x(FCPX)调色笔记

文章目录一、注意点二、调色流程1. 颜色校正(一级校色)1.1 颜色转换即色彩空间转换1.2 降噪(noise reduction 即NR)1.3 调整曝光和对比度1.4 调整白平衡1.5 饱和度1.6 肤色调整2.二级校色2.1 突出人物主体的方法一2.2 突出人物主体…

axure web组件下载_实践干货:Axure插入图标的4种办法

编辑导读:图标是我们在制作产品原型的时候使用的比较多的一类素材,在日常绘制原型的时候一般是以插入的形式添加到Axure中。本文作者结合自身经验,介绍了四种Axure中引入图标的方法,希望对大家能有所帮助。在日常绘制原型的时候&a…

上师大计算机学院分数线,分数低还想上师范大学?这4所师范院校,二本的分数就够了...

截至目前,全国各省市高考成绩全部公布了,接下来最主要的工作就是填报志愿,选择适合自己的大学和专业。每年到这个时候,就有不少家长和考生问我,自己的分数较低,不够一本线,有没有比较好的师范大…

上古卷轴3晨风职业_巫师3:上古卷轴5老玩家,入手巫师3,体验昆特牌版“实验室”...

今天小编入手了,期待已久的《巫师3》,而作为一个《上古卷轴5》的“老油条”,奇趣君下面说一下,一个老滚5的“老油条”玩《巫师3》是什么样的体验。首先我进入了开场动画,我没有跳过,而是看着他的剧情&#…

MacBook Mac OS 无法识别移动硬盘的解决办法

文章目录方法一、打开系统信息 System Information方法二、打开磁盘工具 Disk Utility方法一、打开系统信息 System Information 打开「系统信息」,点击左侧硬件列表的 USB,在右侧找到你的移动硬盘点击查看,如下图所示: 然后打开…

mysql没有开启binlog能恢复数据吗_一个妹纸rm -rf把公司整个数据库删没了...

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。事故背景安排一个妹子在一台生产服务器上安装 Oracle&#x…

头条号个人中心登录_头条号平台上线「插入小程序」功能

头条号平台上线「插入小程序」功能,创作者可在图文、小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升。一、什么是「头条小程序」?「头条小程序」是为内容生产者提供的延伸变现工具,是对创作者内容服务的延…

stearm计算机验证码,steam账户名称怎么取,值得收藏

steam是计算机游戏界最大的数码发行平台,是一个游戏整合下载平台,很多喜欢玩游戏的朋友都会用这个软件,当然也不少刚开始使用这个软件的朋友,这些朋友因为才刚刚接触到这个软件所以不知道steam账户名称怎么取,不要担心…

造完家怎么拆东西_地弹簧玻璃门怎么拆?地弹簧玻璃门拆除注意事项有哪些?...

现如今,我们总可以看到玻璃门的身影,在我们的生活中,玻璃门可以说是随处可见。而对于安装玻璃门,大家了解多少呢?为了更好认识玻璃门,今天就带大家一起走进玻璃门的安装中,告诉大家怎么样拆卸和组装玻璃门…

dubbo provider异步_Dubbo学习(六) Dubbo面试问题

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务&#xff0c…

测试网页兼容软件,WEB测试兼容性

软件兼容性测试在目前软件测试领域占有很只要的地位,无论B/S架构还是C/S架构的软件都需要进行兼容性测试,充分保证产品的平台无关性,使用户群充分的感受到软件的友好。139WDA属于WEB产品,以下就来总结下WEB测试之兼容性测试。WEB兼…