先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
🍋 2.抽象类中不一定包含抽象方法,有抽象方法的类必定是抽象类
🍋 3.构造方法和静态方法不能声明为抽象方法
🍋 4.抽象类必须得有构造方法
🍋 4.子类必须实现抽象类的所有抽象方法,除非子类也为抽象类
🍋 5.小剧场解答
🌕抽象类全解析
========
🌴1.什么是抽象类?
===========
我们平时学习的普通类,它的构造有普通成员变量、普通成员方法、静态成员变量和静态成员方法以及一些方法体内的局部变量。而抽象类中它还可以包含抽象方法。所以我们初步就知道了,具有抽象方法的类就是抽象类。为了表示抽象的概念,我们需要在类的前面加上abstract关键字,告诉别人我们这个方法是抽象方法
🌴2.什么是抽象方法?
首先我们要明白一点,什么叫做抽象?抽象当然就是无法具体的描绘写来或者实例出来。我们都知道方法都是有一对{},大括号里面的内容就是我们的方法体,既然我们的抽象方法是无法具体的写出来的,那肯定是没有方法体的,所以我们要知道,**抽象方法是没有方法体的方法。为了告诉别人我们的方法是抽象方法,所以要在前面加上abstract关键字。**书写的格式如下:
public abstract class animal {//定义一个抽象类
abstract void test();//定义一个抽象方法,没有方法体也没有{},直接以;结尾
}
🌴3.什么时候使用抽象类和抽象方法?
我们都知道,一个类,代表一类具有共同身份或者特征的群体或者事务。比如老师这个群体,她可以是一个类,有生日和姓名这个属性,每天老师需要休息,吃饭还要工作等,通过这样我们写出老师类
public class Teacher {//表示老师类
String name;//姓名
String birthday;//生日
public void sleep(){}//表示休息的行为
public void eat(){}//表示吃饭的行为
public void word(){}//表示工作的行为
}
这时,根据我们的需求,我们还需要一个学生类,那我们再分析学生有哪些属性和行为呢?首先学生同样也有姓名和生日这两个属性,而且还可以加上一个学号。行为也有休息吃饭和工作(学习当然也是工作)等行为。于是我们得到学生类
public class Student {//表示学生类
String name;//姓名
String birthday;//生日
int id;//学号
public void sleep(){}//表示休息的行为
public void eat(){}//表示吃饭的行为
public void word(){}//表示工作的行为
}
这时我们突然发现,老师类和学生类有着类似的属性和行为,在两个类中同时声明相同的,这不是代码冗余了嘛?这时我们聪明的人们就想到,我们能不能把它们共有的东西都抽出来,然后让具有这些属性和行为的类去继承得到,这样就不用复写这么多相同的代码了。于是抽象类应用而生
🔑:抽象类是将多个类中的具有的相似的或者共有的属性和方法抽取出来的一个类。通过继承抽象类来获得这些属性和方法,从而减少我们地代码量,提高我们写代码地效率。
因为老师和学生都有人,所以我们抽取出它们的共同属性和行为一个抽象类Person
public abstract class Person {
String name;//姓名
String birthday;//生日
abstract void sleep();//表示休息的行为
abstract void eat();//表示吃饭的行为
abstract void word();//表示工作的行为
}
这时我们通过继承简化代码,去书写老师类和学生类
public class Teacher extends Person {
@Override
void sleep() {
System.out.println(“老师去教师宿舍休息”);
}
@Override
void eat() {
System.out.println(“老师去老师饭堂吃饭”);
}
@Override
void word() {
System.out.println(“老师认真教学”);
}
}
public class Student extends Person {
int id;
@Override
void sleep() {
System.out.println(“学生去学生宿舍休息”);
}
@Override
void eat() {
System.out.println(“学生去学生饭堂吃饭”);
}
@Override
void word() {
我的面试宝典:一线互联网大厂Java核心面试题库
以下是我个人的一些做法,希望可以给各位提供一些帮助:
整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
还有源码相关的阅读学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
中…(img-0a54N8oI-1713436588818)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-1wFNWblg-1713436588819)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!