我们先用提干两个修饰词中的任意一个创建一个类

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同时加以修饰?的更多相关文章

  1. 115个Java面试题和答案(上)

    转自:http://www.importnew.com/10980.html 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的 ...

  2. java中重载一定在一个类里面吗?

    虽然这些概念在翻译成中文的过程中,有很多不同的翻译方式但本质上只有两种说法,就是Override和Overload其中,Overload一般都被翻译成重载而Override的翻译就乱七八糟了,所谓覆盖 ...

  3. java面试题之Thread类中的start()和run()方法有什么区别

    start()方法被用来启动新创建的线程,而且start()内部调用了run()方法, 区别: 当你调用run()方法的时候,只会是在原来的线程中调用,没有新的线程启动: start()方法才会启动新 ...

  4. 2018年最新JAVA面试题总结之框架(4)

    转自于:https://zhuanlan.zhihu.com/p/40098726 1.谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心是什么?回答:Spr ...

  5. 整理+学习《骆昊-Java面试题全集(上)》

    ★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...

  6. Java面试题全集(上)转载

    Java面试题全集(上)   2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是 ...

  7. Java 类加载机制(阿里面试题)-何时初始化类

    (1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进 ...

  8. 史上最全Java面试题整理(附参考答案)

    下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1.面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来 ...

  9. Java面试题全集(上)

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

随机推荐

  1. C#LeetCode刷题-字符串

    字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.6% 中等 5 最长回文子串   22.4% 中等 6 Z字形变换   35.8% 中等 8 字符串转整数 (atoi)   ...

  2. VS Code 黑宝书背后的故事

    自开售以来,<Visual Studio Code 权威指南>就受到了许多读者朋友的青睐.在京东和当当两大平台上,都分别取得了不错的绩: 当当:计算机新书热卖榜第一名 京东:科技IT新书榜 ...

  3. 题解 P1407

    建图方式:旧关系女人连男人,现关系男人连女人(当然,反过来也可以) 原因可以这样考虑: 如果一个男的把女的绿了,那么这个女人就会去找一个她曾经交往过的男人,也就是在这种情况下,某种"影响&q ...

  4. 金题大战Vol.0 A、凉宫春日的叹息

    金题大战Vol.0 A.凉宫春日的叹息 题目描述 给定一个数组,将其所有子区间的和从小到大排序,求第 \(k\) 小的是多少. 输入格式 第一行两个数\(n\),$ k\(,表示数组的长度和\)k$: ...

  5. 笔试算法稳了,GitHub 50k Star《labuladong的算法小抄》

    秋招算法有救了!!! 前不久在 GitHub 出现了一个手把手带你刷 LeetCode 的项目:fucking-algorithm. 该项目此前在 GitHub 开源后,连续多次霸榜 GitHub T ...

  6. 运用sklearn进行线性判别分析(LDA)代码实现

    基于sklearn的线性判别分析(LDA)代码实现 一.前言及回顾 本文记录使用sklearn库实现有监督的数据降维技术——线性判别分析(LDA).在上一篇LDA线性判别分析原理及python应用(葡 ...

  7. Kubernetes实战指南(三十三):都0202了,你还在手写k8s的yaml文件?

    目录 1. k8s的yaml文件到底有多复杂 2. 基于图形化的方式自动生成yaml 2.1 k8s图形化管理工具Ratel安装 2.2 使用Ratel创建生成yaml文件 2.2.1 基本配置 2. ...

  8. 哲思集-转载自CSDN

    CSDN 创始人蒋涛:世界被编码之后 分享赚¥9.90订阅博主 “写代码 20 年,通过网络平台和社区,帮助中国的程序员更好成长,这是我最希望被大家记住的.”这是蒋涛接受 ZAKER 采访的开场白. ...

  9. leetcode刷题记录——链表

    使用java实现链表 单向链表 双向链表 单向循环链表 双向循环链表 题目记录 160.相交链表 例如以下示例中 A 和 B 两个链表相交于 c1: A: a1 → a2 c1 → c2 → c3 B ...

  10. java应用中的日志介绍

    日志在应用程序中是非常非常重要的,好的日志信息能有助于我们在程序出现 BUG 时能快速进行定位,并能找出其中的原因. 但是,很多介绍 AOP 的地方都采用日志来作为介绍,实际上日志要采用切面的话是极其 ...