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面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...
随机推荐
- 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研
摘要:自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷.这不,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用. 上次借着高考热点整 ...
- Mysql Column 'xxxxx' in field list is ambiguous"
使用了关联查询,两张表有相同的字段,所以说取值含糊不清: 使用别名.列名解决: 如 a.description
- 利用maven的MyBatis Generator 插件自动创建代码
1.首先创建Maven工程 2.修改pom.xml文件代码如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...
- Scss 定义内层class的简单写法
如果定义样式的时候,内层样式名称和外层保持一致的话可以简写如下 如果一个样式下有相关的其他样式可以使用 &-xxx 来简写, <template> <div class=&q ...
- 设计模式:原型模式介绍 && 原型模式的深拷贝问题
0.背景 克隆羊问题:有一个羊,是一个类,有对应的属性,要求创建完全一样的10只羊出来. 那么实现起来很简单,我们先写出羊的类: public class Sheep { private String ...
- JavaScript基础-01
1. Javascript是一门动态的.弱类型的.解释型的脚本语言 动态:数据类型在运行时决定 弱类型:变量数据的类型不是确定的,可以随意的进行改变: 解释型:相对编译型来说,编译型计算机在执行之前需 ...
- Linux学习笔记 一 第三章 Linux常用命令
第三章Linux常用命令 一.文件处理命令 1.命令格式 2.目录处理命令:ls 3.目录处理命令:mkdir 4.文件处理命令: touch
- Atomic原子类
Atomic原子类 Atomic原子类位于并发包java.util.concurrent下的java.util.concurrent.Atomic中. 1. 原子更新基本类型类 使用原子方式更新基本数 ...
- three.js 制作逻辑转体游戏(下)
上一篇已经对绕非定轴转动有所了解,这篇郭先生继续说一说逻辑转体游戏的制作,这部分我们同样会遇到一些小问题,首先是根据数据渲染陷阱和目标区域,然后是对可以转动的判定,最后是获胜的判定. 1. 根据数据渲 ...
- Adversarial Attack Type I: Cheat Classifiers by Significant Changes
出于实现目的,翻译原文(侵删) Published in: IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI ...



