java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?
我们先用提干两个修饰词中的任意一个创建一个类
package components.javaTest.day4_20200910; /**
* Question004:
* java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?
*/
public final class AbstractAndFinal {
}
package components.javaTest.day4_20200910; /**
* Question004:
* java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?
*/
public abstract class AbstractAndFinal {
}
可见任意一个修饰符单独修饰时,没问题
接下来我们尝试两个组合使用
package components.javaTest.day4_20200910; /**
* Question004:
* java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?
*/
public final abstract class AbstractAndFinal {
}
or
package components.javaTest.day4_20200910; /**
* Question004:
* java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?
*/
public abstract final class AbstractAndFinal {
}
可以看到编译器提示报错了——》illegal combination of modifiers:'final' and 'abstract'
所以改题答案为:
否(一个类上不可以同时用abstract和final进行修饰)
WHY?
至于为什么不能同时加以修饰?在使用一个东西之前,我们如果有时间和精力的话,最好先了解下这个东西到底是拿来干哈子的。所以,我们先来看看这两个修饰词各自的含义及其用法。
abstract
含义:
抽象的
用法:
可以作用于:
1.类
2.方法
1.作用在类时:
表示抽象类,不能被实例化
2.作用在方法时:
表示抽象方法,没有具体实现
final
含义:
Java中的final关键字根据不同的上下文环境,会存在细微的差别(出于设计或者出于开发效率的角度考虑),但它通常代表的意思为:“无法改变的”
用法:
可以作用于:
1.变量
2.方法
3.类
1.作用在变量时有可能表示:
A.编译时常量,永远不改变
B.运行时被初始化的值,在初始化之后都不会被改变
2.作用在方法时有可能表示:
A.防止任何继承类修改它的含义,即锁定方法,以免【出于设计的考虑】
父类如果有个final修饰的say()方法,这时,子类就不允许出现重写的say()方法(如果想方法名不变,可以选择重载的思路)
B.在java早期实现中,final修饰的方法就是同意编译器将针对该方法的所有调用都转为内嵌调用【出于效率的考虑-至于里面的道道,还得进一步了解,但在这里我们暂且先大致了解其用法】
3.作用在类时表示:
该类无法被继承
我们可以这么理解:
abstract主要目的是想让一个实现类去具体实现,而final最主要是一种约束,不想让其他人来修改它的实现,两者相互矛盾。所以不能共存。
非 淡 泊 无 以 明 志
非 宁 静 无 以 致 远 !
java面试题0004-在一个类上是否可以用abstract和final同时加以修饰?的更多相关文章
- 115个Java面试题和答案(上)
转自:http://www.importnew.com/10980.html 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的 ...
- java中重载一定在一个类里面吗?
虽然这些概念在翻译成中文的过程中,有很多不同的翻译方式但本质上只有两种说法,就是Override和Overload其中,Overload一般都被翻译成重载而Override的翻译就乱七八糟了,所谓覆盖 ...
- java面试题之Thread类中的start()和run()方法有什么区别
start()方法被用来启动新创建的线程,而且start()内部调用了run()方法, 区别: 当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动: start()方法才会启动新 ...
- 2018年最新JAVA面试题总结之框架(4)
转自于:https://zhuanlan.zhihu.com/p/40098726 1.谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心是什么?回答:Spr ...
- 整理+学习《骆昊-Java面试题全集(上)》
★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...
- Java面试题全集(上)转载
Java面试题全集(上) 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是 ...
- Java 类加载机制(阿里面试题)-何时初始化类
(1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进 ...
- 史上最全Java面试题整理(附参考答案)
下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...
- Java面试题全集(上)
2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...
随机推荐
- ECS7天实践进阶训练营Day5:使用ECS自建云端下载服务器
一.概述 CCAA是服务器离线下载解决方案包,其组件中包含了Aria2提供了离线下载功能,能支持HTTP/HTTPS/FTP/BT/磁力链下载等常用离线下载模式及断点续传等功能.ccaa_web支撑于 ...
- 【Leetcode 做题学算法周刊】第八期
首发于微信公众号<前端成长记>,写于 2020.05.07 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 15 ...
- vue2和vue3的区别
一.常用命令 vue -V 查看本地 vue 版本 二.官方文档 3.0:https://cli.vuejs.org/zh/ 三.创建文件 3.0:vue create 进入工程文件夹,创建项目. 2 ...
- 国人开源了一款超好用的 Redis 客户端,真香!!
大家都知道,Redis Desktop Manager 是一款非常好用的 Redis 可视化客户端工具,但可惜的是 v0.9.4 版本之后需要收费了: 这个工具不再免费提供安装包了,要对所有安装包收费 ...
- css3新属性position: sticky 一分钟实现 导航栏悬停功能
css3新属性position: sticky 一分钟实现 导航栏悬停功能 前言 正文 前言 想必很多前端小伙伴经常会在开发中遇到这样一个需求,就是在下划时,导航栏悬停在屏幕最上方,例如咱们的csdn ...
- 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!
写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么 ...
- Golang中使用set
两种 go 实现 set 的思路, 分别是 map 和 bitset. map 的 key 肯定是唯一的,而这恰好与 set 的特性一致,天然保证 set 中成员的唯一性.而且通过 map 实现 se ...
- kolla快速集成openstack-ocata和opencontrail-4.0.1.0单节点
参考链接: kolla快速集成openstack-ocata和opencontrail-4.0.1.0单节点 https://github.com/Juniper/contrail-docker/wi ...
- IA-32/centos7开机流程
开机后系统首先在实地址模式下工作(只有1MB的寻址空间) 开机过程中,需要先准备在实模式下的中断向量表和中断服务程序.通常,由固化在主板上一块ROM芯片中的BIOS程序完成 加载BIOS的硬件信息,B ...
- 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍
Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...