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

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

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

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

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

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

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

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

这是另一个屏幕快照,显示您在Java的最终类中无法使用抽象方法:

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

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

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

我们可以修改代码示例以在main类中包括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/349814.shtml

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

相关文章

重庆大学校友会计算机,资环学院联谊会隆重举行

2011年11月5日,重庆大学北京校友会资源及环境科学学院联谊会在北京京师大厦隆重举行。本次联谊会由重庆大学北京校友会主办,重庆大学资环学院协办,费用由82采矿段建国和82管理孙国敏共同资助,得到了学校领导的高度重视和众多校友的…

小学计算机三年级课程目录,小学生信息技术课本目录.doc

小学生信息技术课本目录三年级上册第1课  生活中的信息技术第2课  电脑能干什么第3课  电脑的组成第4课  爱护电脑设备第5课  正确使用电脑第6课  认识桌面第7课  让鼠标动起来第8课  认识电脑键盘第9课  使用记事本第10课  基准键操作第11课  上行键操作第12课  下…

cdh搭建hadoop集群_Hadoop宿醉:使用Apache Whirr启动hadoop集群CDH4

cdh搭建hadoop集群这篇文章是关于如何在EC2实例上启动CDH4 MRv1或CDH4 Yarn集群的。 据说您可以在Whirr的帮助下在5分钟内启动一个集群! 当且仅当一切工作正常时,这才是正确的! 希望本文在这方面对您有所帮助。 所以,让我们划船…

计算机活动宣传稿,畅想科技,创造梦想 ——东华大学计算机科学与技术学院第十一届图灵科技文化节通讯稿...

2015年11月11日,东华大学计算机科学与技术学院“畅想科技,创造梦想”第十一届图灵科技文化节在松江校区图文信息中心第二报告厅拉开帷幕,出席的嘉宾有:计算机学院院长刘国华教授、计算机学院党总支副书记虞晨洁老师、东华大学校团…

在cygwin下编译c语言

1 #include <stdio.h> 2 3 int main (void) 4 { 5 printf("Hello World!\n"); 6 return 0; 7 } 1.保存到cygwin工作目录下 2.在cygwin中输入&#xff1a;gcc -o hello helloworld.c 将文件编译成exe后缀可执行文件 3.在cygwin中输入&#xff1a;ls …

Apache Camel 2.20发布–新增功能

Apache Camel 2.20已于今天发布&#xff0c;并且像往常一样&#xff0c;我受命撰写有关此新发行版及其亮点的博客。 该版本具有以下重点。 1&#xff09;Java 9技术预览支持 我们已经开始支持Java 9的工作&#xff0c;此版本称为技术预览。 源代码在Java 9上构建和运行&…

距测试软件,两步路怎么测量距离 测距工具使用方法介绍

两步路户外助手是专门为户外运动爱好者打造的一款手机户外运动助手软件&#xff0c;用户通过它可以记录自己的每一条轨迹以及出行方式&#xff0c;这样可以很好的为大家记录各种户外出行的数据&#xff0c;还能参加各种活动和比赛。此外软件自带的地图还有很多实用的小功能&…

Visual Studio的Web Performance Test提取规则详解(1)

总结 Visual Studio的Web Performance Test是基于HTTP协议层的&#xff0c;它不依赖于浏览器&#xff0c;通过直接接收&#xff0c;发送HTTP包来和Web服务器交互。Web Performance Test发送和接收的一系列请求和响应之间存在相关性&#xff0c;例如&#xff0c;用户登录后&…

我的世界f服务器自定义皮肤,我的世界服务器皮肤指令

我的世界换肤教程&#xff0c;本篇教程记录如何使用MCSkin 3D软件、皮肤使用、皮肤预览图制作等相关教程。感兴趣的小伙伴们可以来看看这篇我的世界皮肤教程。一.MCSkin 3D1.4软件介绍及教程&#xff1a;1. 视图-3D设置-屏蔽部位半透明显示在绘制其他部位时&#xff0c;可以用半…

couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)

couchbase使用Couchbase 2.0开发新应用程序时&#xff0c;有时需要从代码中动态创建视图。 例如&#xff0c;在安装应用程序&#xff0c;编写一些测试时&#xff0c;可能会需要此方法&#xff1b;或者&#xff0c;在构建框架时&#xff0c;您也可以使用此方法&#xff0c;并希望…

如何设置Linux操作系统shell命令的默认语言

Linux中语言的设置和本地化设置真是一个很繁琐的事情&#xff0c;时不时的会出现乱码的情况。 一般来说&#xff0c;linux中显示什么语言是通过环境变量来确认的。 这些环境变量包括&#xff1a; $LANG / $LANGUAGE / $LC_CTYPE .... 可以通过locale命令查看这些变量的值。 要设…

如何在虚拟机上安装wsus服务器,如何在Hyper-V虚拟机上安装WSUS服务器技巧

由于许多企业继续减少使用物理服务器&#xff0c;一个经常提及的问题随之而来&#xff1a;对Windows Server更新服务(WSUS)服务器进行虚拟化处理是个好想法吗?简单的回答&#xff1a;是的。本文介绍了如何在Hyper-V虚拟机中运行WSUS。WSUS可以在虚拟机中运行吗?一言以蔽之&am…

从Spring Data JPA访问EntityManager

Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层。 有时&#xff0c;您需要从Spring Data JPA访问EntityManager。 这篇文章向您展示了如何访问EntityManager。 实体管理器 EntityManager的目的是与持久性上下文进行交互。 然后&#xff0c;持久性上下文将管…

NOIP模拟测试11「string·matrix·big」

打的big出了点小问题&#xff0c;maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像&#xff0c;但我没做序列&#xff0c;考场回忆学长讲课&#xff0c;打不出来。最后我口胡了一个CDQ分治&…

监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?

原标题&#xff1a;监控摄像机怎么维护和保养?在安防监控系统中&#xff0c;起决定作用的是显示器、摄像机和储存设备。那么&#xff0c;问题来了&#xff0c;监控摄像机怎么维护和保养呢?摄像机属于精密家电&#xff0c;使用上也应更加注意。1、注意防潮&#xff1a;潮湿是摄…

Promise 学习心得

当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise&#xff0c; Promise 有什么用&#xff1f;在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱&#xff0c;Promise 这个东西就是为了解决回调嵌套而生的 Promise 是异步编程的一…

小米羊城通余额不足服务器维护,再不怕羊城通余额不够了!地铁站现自助补票“神器”...

再不怕羊城通余额不够了&#xff01;地铁站现自助补票“神器”金羊网 作者&#xff1a;陈泽云 2018-04-16金羊网讯 记者陈泽云报道你有没遇到过这样情况&#xff0c;准备出地铁站时&#xff0c;却发现羊城通余额不足刷不出闸、或者闸机读取不到你的进站信息&#xff0c;只能去…

flex 组建重写

flex历经几个版本的变化&#xff0c;其封装性也越来越规范。 今日flex的学习&#xff0c;总结是组件的重写。 项目中为使组件的针对性&#xff0c;易用性更强 &#xff0c;免不了要重写组件。 要改变你的对手你的了解你的对手。 一个组件从被new到渲染出来主要经历几个重要事件…

glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器

glassfish发布应用最近&#xff0c;大概在去年年底&#xff0c; GlassFish开源团队发布了GlassFish 4.0 beta 72作为升级版 。 阿伦古普塔&#xff08;Arun Gupta&#xff09;在他的博客上发布了有关GlassFish 4 .0 beta 72的Maven坐标的文章。 该版本意义重大&#xff0c;因为…

Zend Framework 多模块配置 (二)

&#xfeff;续 Zend Framework 多模块配置 &#xff08;一&#xff09; 4&#xff09;启动bootstrap文件&#xff1a; 全局bootstrap文件 &#xff08;repos/application/botstrap.php&#xff09; class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {/***加载一…