{eval=Array;=+count(Array);}
肝了一个月的面试题终于来啦,大家开心不。
2020年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spring boot,spring cloud,netty,dubbo,activemq,Java web,jvm,kafka,MongoDB,mybatis,MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,设计模式,数据结构,算法,分布式,限流,降级,cap原理等等知识点
话不多说,直接上图
总共80多个PDF
【BAT必备】计算机网络面试题:
链接:https://pan.baidu.com/s/1hFggmtdL1ZmE4utBlo8S1g 提取码:qfkh
【BAT必备】设计模式面试题
链接:https://pan.baidu.com/s/1eXJveIVvQe-m3MdvLcT-fQ 提取码:j0kx
【BAT必备】数据结构算法面试题:
链接:https://pan.baidu.com/s/1daFN9jY03fXsqwc9LeKi2w 提取码:5ab7
【BAT必备】多线程面试题:
链接:https://pan.baidu.com/s/1GdvsNESoHPBjWKN2h-iK7Q 提取码:cqib
【BAT必备】并发编程锁面试题:
链接:https://pan.baidu.com/s/1hXPPtMY2dvz-g7QcSTc3PA 提取码:zhmy
【BAT必备】tomcat面试题:
链接:https://pan.baidu.com/s/1qPZXx4lmLynmaF0XjRTzpQ 提取码:5m16
【BAT必备】zookeeper面试题:
链接:https://pan.baidu.com/s/1EhOee9e1Qe-Q6RC8KlthxA 提取码:p2am
【BAT必备】spring 全家桶面试题:
链接:https://pan.baidu.com/s/1DXGO-N5P6QIGKLZ8LIVOuQ 提取码:m9v7
【BAT必备】rocketMq面试题:
链接:https://pan.baidu.com/s/1TEF3yUR4OOaIpj-4ud_79A 提取码:3g3d
【BAT必备】redis面试题:
链接:https://pan.baidu.com/s/1qlanxWBfwvKUObnHulCQiA 提取码:rjo7
【BAT必备】rabbitMq面试题:
链接:https://pan.baidu.com/s/1ywLiq3IUJVyZosPLNrmyTA 提取码:0td4
【BAT必备】netty面试题:
链接:https://pan.baidu.com/s/1Pbv4aelqOt1dUPA2SwEB_Q 提取码:2w1e
【BAT必备】Nginx面试题:
链接:https://pan.baidu.com/s/1r8YNyOz0N6MJ9F0045lEZw 提取码:49tl
【BAT必备】MySQL面试题:
链接:https://pan.baidu.com/s/1GeX6Fs4nNi6fTUHKxJ2SZw 提取码:8pow
【BAT必备】mybatis面试题:
链接:https://pan.baidu.com/s/1xOYiaiQ2JpPt2jb6GdWjaA 提取码:aqd3
【BAT必备】MongoDB面试题:
链接:https://pan.baidu.com/s/1QTVx1TF8tDn6LUJr7wdfOQ 提取码:j1qt
【BAT必备】Linux面试题:
链接:https://pan.baidu.com/s/1veZ3dBJmz1PduCE5tl-e1A 提取码:txpf
【BAT必备】kafka面试题:
链接:https://pan.baidu.com/s/1SWhiBCswleYGsDupSGzE6g 提取码:o1gv
【BAT必备】jvm面试题:
链接:https://pan.baidu.com/s/1xi-QLq_I75kha439EGqELw 提取码:kxde
【BAT必备】java web面试题:
链接:https://pan.baidu.com/s/1r3Bupn9qhJbw5ebR_6h94A 提取码:qba4
【BAT必备】Java基础面试题:
链接:https://pan.baidu.com/s/1J40nYKIoV_VMCumoRpIyhQ 提取码:5xo7
【BAT必备】dubbo面试题:
链接:https://pan.baidu.com/s/10flnh7Tb0Oxd3yZPQOnjsA 提取码:5gc9
【BAT必备】activeMQ面试题:
链接:https://pan.baidu.com/s/1igNB64dpMCjCQkRzvqCXpQ 提取码:006a
【BAT必备】分布式相关面试题大全面试题:
链接:https://pan.baidu.com/s/1ZcpJDh07B2NPAL4_4VC6jQ 提取码:w4mw
【BAT必备】java面试题大全:
链接:https://pan.baidu.com/s/11jw0Ua4CZiI8-S6EadM_iQ 提取码:epmp
【BAT必备】Java面试汇总
链接:https://pan.baidu.com/s/1vG9_cNoiYBW5TY32S4wGnQ 提取码:k087
【BAT必备】2020年多家公司整理的350道Java面试题手册
链接:https://pan.baidu.com/s/1FEGQVTgiyKG0kCasYn-n2g 提取码:f7y1
【BAT必备】Java全部核心知识点整理
链接:https://pan.baidu.com/s/1StG-ib70TDAE1Hb4NVLQRQ 提取码:5rp1
2021大厂java面试题库:可能会有些多,建议你都自己整理答案,然后去面试,提取去高频的再好好记记,我觉得能很快找到工作的。
Java 面试题有哪些?面试经常会问什么样的问题?互联网大厂的面试题是怎么样的呢?今天,我们就一起来聊一聊,关于 Java 相关的面试题。
关于 Java 相关的面试题,其实有很多,而且在 GitHub 上,有很多人整理了很多 Java 相关面试题,而且这些面试题里不仅配有答案,分析,很多面试题都包含了一些类似于 BAT TMD 等大厂的面试题,看这些面试题,可以让你充分了解大厂面试 Java 会经常为什么样的问题。
所以,今天我就给大家推荐两个关于 Java 面试的开源项目。里面就包含了很多 Java 面试题,还有经验分享。
这个开源项目就是:JavaGuide ,它已经有 6 万多人 star 了。号称是:【Java 学习 + 面试指南】,一份涵盖大部分 Java 程序员所需要掌握的核心知识。
来看一看包含了哪些核心知识吧!看图:
上面是整个开源项目的目录,具体每个目录下有什么呢?如下:
我在这里就不一一列举了,比如,我们点击其中一个链接,看看具体有哪些面试题呢?
是不是内容很丰富呢?
这个开源项目地址: https://github.com/Snailclimb/JavaGuide
这个开源项目的名称就是:Java-Interview ,它起的名字更厉害,更唬人,就是:Java 面试必会,直通 BAT 。对,就是这么夸张,你看完之后,让你直通 BAT 。
里面整合和整理了很多面试题。比如这样:
再比如,具体内容:
不仅有问题,还带有答案,也是整理很多 Java 相关的面试题。所以,建议大家在上面复习和学习,去应对面试,可以做到充分准备。毕竟,我们不打无准备之仗嘛。
所以,你可以在 GitHub 上去获取,一搜,出来一堆。GitHub 对于程序员来讲,绝对是个好地方。
怎么样,经过我这么一回答,是不是豁然开朗了呢?如果感觉不错,记得给个赞哦!
谢邀回答!!!????????????
我认为,Java面试试题众多,重在对基础理论知识和实际操作的考核,给你分享一些面试题目(由于篇幅有限,答案省略),主要有:
1. 什么是Spring MVC框架的控制器?
2.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
3.结合项目谈谈你对 MVC 的理解?
4.什么是Spring MVC?SpringMVC的工作流程是什么?
5.SpringMVC的优点是什么?
6.SpringMVC与Struts2的区别?
7.Spring框架分为哪七大模块,各模块的主要功能作用是什么?
8.Spring框架中的三大核心思想是什么?
9.AOP的概念以及使用AOP机制有什么好处?
10.Java编程中实现AOP有几种方式?
11.jsp静态包含和动态包含的区别?
12.jsp有哪些内置对象?作用分别是什么?
13.Tomcat 有哪几种Connector 运行模式?
14.你所知道的集合类都有哪些?主要方法?
15.说出ArrayList、Vector、LinkedList 的存储性能和特性?
16.Collection 和Collections 的区别?
17.HashMap 和Hashtable 的区别?
18.Arraylist 与Vector 区别?
19.Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?
20.介绍JAVA中的Collection FrameWork?如何写自己的数据结构?
21.EJB与JAVA BEAN的区别是什么?
22.请你介绍EJB的基本架构?等等。
以上题目是我分享的一点点建议,希望能对你有所帮助和启发,也希望与你相互学习、共同进步!!!
我也是一直做java开发很多年啦,经历过的面试很多了,大公司小公司都待过,给你一些建议吧。
java面试题面还是很广的,下面给你分类整理下来的。
1、java基础知识。比如面向对象的特征、多态、访问修饰符范围、static和final关键字、抽象类与接口、深拷贝与浅拷贝、序列化与反序列化、几种数据结构、拆箱与装箱
2、java集合相关的。比如集合框架理解、list、set、hashmap底层实现以及区别?hashmap底层原理,put和get方法怎么实现的?hashmap与hashTable区别?concurrentHashMap底层实现?
3、java异常处理。异常分类?编译时异常与运行时异常区别?举例子有哪些运行时异常?
4、jvm内存模型。以及GC垃圾回收机智和算法。
5、spring相关。解释IOC和AOP,以及他们的原理。bean生命周期
6、mysql。索引是什么?索引分类?索引优化?
7、mybaits相关。动态标签,字符串替换,防注入。
8、dubbo。dubbo服务注册与发现。服务负载均衡算法,dubbo配置与使用。
9、多线程。synchronized用法与底层原理,与lock的区别?线程池有哪些?线程池有哪些参数?线程池优化?
10、redis。redis数据类型有哪些,每个类型的使用场景?redis为什么这么快?redis怎么保证高可用?redis怎么保证与数据库数据一致?
11、消息队列。activeMQ、rabbitMQ、rocketMQ、kafka,都可以了解下,以及怎么保证高可用和处理高并发。
12、排序算法与数据结构。冒泡排序、快速排序、选择排序、插入排序等等
大概就有这么个方面的,好好准备还是有很多机会的。
我主要做java 开发的,大家有什么其他问题可以关注我给我私信,或者继续在评论区和我沟通,我有java高级分布式高并发消息队列面试视频可以分享,大家一起进步
互联网高级java高并发分布式消息队列面试视频在蜻蜓FM,搜索“浅戏互联网”,喜欢的朋友可以关注一下,谢谢。
谢邀。一般关于面试的java框架都是根据你简历中之前项目用到的框架来问。题主没有问到具体的框架,我就谈谈目前公司招聘要求最多,也是公司用的最多的三个框架SSM。
关于Spring:
1.谈谈你对Spring IOC和DI的理解,它们有什么区别?
2.Spring配置bean实例化有哪些方式?
3.请介绍一下Spring框架中Bean的生命周期和作用域
4.Bean注入属性有哪几种方式?
5.什么是AOP,AOP的作用是什么?
6.Spring如何处理线程并发问题?
7.介绍一下Spring的事物管理
关于SpringMVC:
1.什么是SpringMVC ?简单介绍下你对SpringMVC的理解?
2.说说SpringMVC的流程?
3.SpringMVC有什么优点?
4.SpringMVC怎么样设定重定向和转发的?
5.如何解决POST请求中文乱码问题,GET的又如何处理呢?
6.Spring MVC的异常处理 ?
7.SpringMvc的核心入口类是什么?
8.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
9. @RequestMapping注解用在类上面有什么作用?
10.如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
11.SpringMvc如何处理视图?
关于Mybatis:
1.#{}和${}的区别是什么?
2.当实体类中的属性名和表中的字段名不一样 ,怎么办?
3.聊聊你对Mybatis的了解和认识?
4. Mybatis工作原理
5.Mapper.xml映射文件中有哪些常用标签?
6.Mybatis是如何进行分页的?分页插件的原理是什么?
7.Mybatis动态sql是做什么的?都有哪些动态sql?简述一下动态sql的执行原理?
8.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
以上题目是我分享的一点点建议,希望能对你有所帮助。有兴趣还可以关注我,定期分享技术干货,在程序员进阶的路上一起学习成长。
指对象一旦被创建状态不能再改变。任何修改都会创建一个新的对象,如 String、Integer及其它包装类。
可以。不要共享可变对象的引用就可以了,如果需要变化就返回原对象的一个拷贝。最常见的例子是对象中包含一个日期对象的引用.
前2者都需要显式地调用构造方法. 造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用.
在idk 1.7之前,switch只能支持byte,short,char,int或者其对应的封装类以及Enum类型。从idk 1.7之后switch开始支持String.
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
HashMap的底层实现是“基于拉链法的散列表”。
不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
goto 是Java中的保留字,在目前版本的Java中没有使用。《The Java Programming Language》附录中有goto和const,但这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字。
1.0相比1.1可以一次传输多个文件,各类浏览器大概都支持3~5个请求同时发送。
http2.0主要是二进制的格式替代了原来的文本,增加了多路复用和首部压缩解决了head of line blocking,另外还有server pushing等新特性。
协议的东西还是建议看一看官网的说明。
此题其实是问浏览器缓存对于HTTP Method中Get和Post的请求是否支持,答案是不支持Post Method。Get可以被浏览器缓存。
允许不同类对象对同一消息做出响应,主要优点:
动态绑定技术(dynamic binding),执行期间判断所引用对象的实际类型,根据实际类型调用对应的方法.
接口的意义用三个词就可以概括:规范,扩展,回调.
不能。子类继承父类后,有相同的静态方法和非静态,这是非静态方法覆盖父类中的方法,父类的该静态方法被隐藏,另外子类可集成父类的静态与非静态方法,至于方法重载我觉得它其中一要素就是在同一类中,不能说父类中的什么方法与子类里的什么方法是方法重载的体现。
以上19道java经典面试题。
为帮助那些往想互联网方向转行想学习,却因为时间不够,资源不足而放弃的人。我搜集整理了一套完整的IT学习资料,包括运营技巧、SEO优化等,比自己在网上零散收集的结构性和连贯性更强,只为帮助那些想学习的人!需要的同学可私信!私信!回复“资料”
SpringMVC
Spring
Mybatis
Hibernate
SpringBoot
Nginx
其他
Thymeleaf、freemarker等模板引擎
NoSQL:Redis、Memcache和MongoDB等的区别、使用
xml解析(DOM解析、SAX解析、JDOM解析、DOM4J解析)
POI实现Microsoft Office格式档案读和写的功能
多线程、线程池的原理及实现
设计模式
Kafka、MQ等消息机制
Sql优化
jvm原理
常用搜索引擎Elasticsearch等
扎实的java基础
作为一家有着12年教学经验且只专心教Java的培训机构,自然有很多高质量的面试题:
131、j2ee中的应用服务器有哪些?(ACD)
A. Weblogic
B. Tomcat
C. JBoss
D. WebSphere
E. IIS
EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序当然,还有许多方式可以实现分布式应用,类似微软的.net技术。
凭借 java 跨平台的优势,用EJB 技术部署的分布式系统可以不限于特定的平台。EJB(EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)称为Java企业Bean,是Java 的核心代码,分别是会话 Bean(Session Bean),实体 Bean(Entity Bean)和消息驱动 Bean(MessageDriven Bean)。
简单来讲:比如做一个工程就和盖房子,如果,你会 java,那么你就拥有了基本的技能,一步一步累砖,总能把房子盖好但是EJB就是一个框架,盖房子的时候,先有这个框架,然后你根据这个框架去累砖,房子就会盖的又快又好。java是基础,EJB 是在java上发展出来的模型,框架。
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就象是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。一旦在服务器上安装并运行了群集服务,该服务器即可加入群集。群集化操作可以减少单点故障数量,并且实现了群集化资源的高可用性。
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
System.out.println("没有去重前的数据为>>>" + list.toString());
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println("去重后的数据为>>>" + list.toString());
}
}
135、利用 java 面向对象的思路设计正方形、长方形、圆的计算面积的类圆:
class MianJi {
float r;
float pai = (float) 3.14;
void gongShi() {
Float s = pai * r * r;
System.out.println("圆的面积为" + s);
}
void zhengFangXing(float bianChang) {
System.out.println("正方形的面积为" + bianChang * bianChang);
}
void changFangXing(float chang, float kuan) {
System.out.println("长方形的面积为" + chang * kuan);
}
public static void main(String[] arg) {
MianJi c = new MianJi();
System.out.println("请输入圆的半径:");
Scanner sc = new Scanner(System.in);
c.r = sc.nextFloat(); c.gongShi();
System.out.println("请输入正方形的边长:");
float bian = sc.nextFloat();
c.zhengFangXing(bian);
System.out.println("请输入长方形的长和宽:");
float chang = sc.nextFloat();
float kuan = sc.nextFloat();
c.changFangXing(chang, kuan);
}
}
136、任何>=6的偶数都可以分解为两个质数之和,从键盘输入一个偶数,输出其分解的质数
public class Test { public static void main(String[] args) { int num = inPut(); outPut(num); } public static int inPut() { Scanner sc = new Scanner(System.in); System.out.println("请输入大于 6 的偶数:"); int num = sc.nextInt(); if (num % 2 != 0 || num <= 6) { System.out.println("输入错误,请重新输入大于 6 的偶数:"); return inPut(); } return num; } public static boolean isPrim(int num) { for (int i = 2; i <= Math.sqrt((double) num); i++) { if (num % i == 0) { return false; } } return true; } public static void outPut(int num) { for (int i = 2; i <= num / 2; i++) { if (isPrim(i) == true && isPrim(num - i) == true) { System.out.println(i + " " + (num - i)); } } } }
137、什么叫对象?什么叫类?什么是面向对象(OOP)?
类的概念:类是具有相同属性和行为的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。类描述了一组有相同特性(属性)和相同行为(方法)的对象。
上面大概就是它们的定义吧,也许你是刚接触面象对象的朋友,不要被概念的东西搞晕了, 给你举个列子吧,如果你去中关村想买几台组装的PC机,到了那里你第一步要干什么,是不是装机的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀,这个配置单就可以想像成是类,它就是一张纸,但是它上面记录了你要买的PC机的信息,如果用这个配置单买10台机器,那么这10台机子,都是按这个配置单组成的,所以说这10台机子是一个类型的,也可以说是一类的。那么什么是对象呢,类的实例化结果就是对象,用这个配置单配置出来(实例化出来)的机子就是对象,是我们可以操作的实体,10 台机子,10 个对象。每台机子都是独立的,只能说明他们是同一类的,对其中一个机(对象)做任何动作都不会影响其它9台机器,但是我对类修改,也就是在这个配置单上加一个或少一个配件,那么装出来的9个机子都改变了,这是类和对象的关系(类的实例化结果就是对象)
● 修饰类
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意 final 类中的所有成员方法都会被隐式地指定为final 方法。在使用 final 修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为 final类。
● 修饰方法
被final修饰的方法将不能被子类覆盖,主要用于:
把方法锁定,以防任何继承类修改它的含义。
在早期的Java实现版本中,会将final方法转为内嵌调用,所以效率能够提升。
● 修饰变量
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用 final 作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
● java.lang.*
提供利用Java编程语言进行程序设计的基础类。最重要的类是Object(它是类层次结构的根)和Class(它的实例表示正在运行的应用程序中的类)。
● java.util.*
包含集合框架、遗留的Collection类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期 Date 类、堆栈 Stack 类、向量 Vector 类等)。集合类、时间处理模式、日期时间工具等各类常用工具包。
● java.io.*
Java 的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java 中 IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
● java.net.*
并非所有系统都支持 IPv6 协议,而当 Java 网络连接堆栈尝试检测它并在可用时透明地使用它时,还可以利用系统属性禁用它。在IPv6不可用或被显式禁用的情况下,Inet6Address 对大多数网络连接操作都不再是有效参数。虽然可以保证在查找主机名时 java.net.InetAddress.getByName之类的方法不返回Inet6Address,但仍然可能通过传递字面值来创建此类对象。在此情况下,大多数方法在使用 Inet6Address 调用时都将抛出异常。
● java.sql.*
提供使用JavaTM编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的API。此API包括一个框架,凭借此框架可以动态地安装不同驱动程序来访问不同数据源。
重载需要满足的条件:在同一类中定义的方法,方法名必须相同,参数一定不同。
发生覆盖的条件:“三同一不低”,子类和父类的方法名称,参数列表,返回类型必须完全相同,而且子类方法的访问修饰符的权限不能比父类低。子类方法不能抛出比父类方法更多的异常。即子类方法所抛出的异常必须和父类方法所抛出的异常一致,或者是其子类,或者什么也不抛出;被覆盖的方法不能是final类型的。因为final修饰的方法是无法覆盖的。被覆盖的方法不能为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。被覆盖的方法不能为static。所以如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。
重写规则:重写方法不能比被重写方法限制有更严格的访问级别。(但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限)。比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们的机会。出错的原因就是:没有加任何访问修饰符的方法具有包访问权限,包访问权限比 public当然要严格了,所以编译器会报错的。参数列表必须与被重写方法相同。重写有个孪生的弟弟叫重载,也就是后面要出场的。如果子类方法的参数与父类对应的方法不同,那么就是你认错人了,那是重载,不是重写。返回类型必须与被重写方法的返回类型相同。
父类方法A:void eat(){}子类方法B:int eat(){}两者虽然参数相同,可是返回类型不同,所以不是重写。
父类方法A:int eat(){} 子类方法 B:long eat(){} 返回类型虽然兼容父类,但是不同就是不同,所以不是重写。
我会定时更新一些Java题库,现在好多做大的都商业化了,而且网上的面试题库有些太久了,不适合,我自己平时上下班地铁上会写一些面试题,纯粹也是为了让自己总结一下,顺便分享给大家,你可以关注看看。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答