- 不能直接把异常抛给main(),因为调用main()是JVM,没人解决了,该报错还报错,所以我们一般会在main()调用之前将异常解决掉
============================================================================
1.抽象类
-
被abstract修饰的方法是抽象方法,抽象方法没有方法体
-
一旦一个类中有抽象方法,这个类必须被声明成抽象类
-
如果一个子类继承了一个抽象父类,有两种解决方案:
1)抽象子类:不实现/实现一部分抽象父类中的抽象方法
2)普通子类:实现抽象父类中全部的抽象方法
-
抽象类不能实例化
-
抽象类有构造函数的,但是不是为了自己使用,为了子类super()调用
-
抽象类可以定义成员变量/成员常量
-
抽象类中可以定义全普/全抽/半普半抽
-
如果一个类不想被外界实例化,可以把这个类声明成抽象类
-
abstract关键字不可以与private static final共用
2 抽象方法
-
被关键字abstract 修饰的方法就是抽象方法
-
抽象方法没有方法体{ },直接以分号结束
================================================================================
package cn.tedu.oop2;
/本类用于面向抽象编程的推导/
public class DesignTeacher {
}
//3.抽取共性,向上形成父类
abstract class Teacher{
String name;
int id;
public abstract void ready();
public abstract void teach();
}
//1.创建培优CGB老师类
//业务:主打互联网架构与微服务
class CGBTeaher extends Teacher{
@Override
public void ready(){
System.out.println(“正在备课:互联网架构与微服务”);
}
@Override
public void teach(){
System.out.println(“正在讲课:互联网架构与微服务”);
}
}
//2.创建高手加薪班老师类
//主打:基础加强 框架加强 高新技术
class ACTTeacher extends Teacher{
@Override
public void ready(){
System.out.println(“正在备课:基础加强 框架加强 高新技术”);
}
@Override
public void teach(){
System.out.println(“正在讲课:基础加强 框架加强 高新技术”);
}
}
//创建抽象父类的子实现类SCDTeacher
//这是一个抽象子类,只实现抽象父类中的一个抽象方法
abstract class SCDTeacher extends Teacher{
@Override
public void ready() {
System.out.println(“正在研发中…”);
}
}
==================================================================================
- 定义父类小鸟类Bird :
腿legNumbers的数量为2
下蛋eggNumbers数量可以自定义
拥有飞行fly()功能 下蛋layEggs()功能
package cn.tedu.review;
//1.定义父类小鸟类
public abstract class Bird {
//2.定义小鸟类中的成员常量,腿的数量为2
final int LEG_NUMBERS = 2;
//3.定义小鸟类中的成员变量,下蛋的数量
int eggNumbers;
//4.定义小鸟类的普通方法
public void fly(){
System.out.println(“小鸟飞呀飞~”);
}
//5.定义小鸟类的抽象方法
public abstract void layEggs();
}
- 定义子级鸽子类Pigeon:
它既会飞,也会下蛋
package cn.tedu.review;
//6.定义小鸟类的子类鸽子类
public class Pigeon extends Bird{
//7.实现抽象父类中未实现的方法
@Override
public void layEggs() {
System.out.println(“鸽子的下蛋数量为:2个”);
}
}
- 定义子级燕子类Swallow:
它既会飞,也会下蛋,还有自己的特有功能筑巢makeNest()
package cn.tedu.review;
//8.创建小鸟类的第2个子类燕子类
public class Swallow extends Bird{
//9.定义燕子类自己的成员变量(与父类的成员变量同名)
int eggNumbers = 6;
//10.实现抽象父类中未实现的抽象方法
@Override
public void layEggs() {
System.out.println(“燕子的下蛋数量:”+eggNumbers);
}
//11.定义子类独有的功能
public void makeNest(){
System.out.println(“燕子筑巢~”);
}
}
- 创建测试类进行测试:
package cn.tedu.review;
//12.创建测试类
public class TestAnimal {
public static void main(String[] args) {
//13.创建鸽子类对象并进行测试
Pigeon p = new Pigeon();
System.out.println(p.LEG_NUMBERS);//2
System.out.println(p.eggNumbers);//0
p.layEggs();//鸽子的下蛋数量为:2个
p.fly();//小鸟飞呀飞~
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
写在最后
为了这次面试,也收集了很多的面试题!
以下是部分面试题截图
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
w-1712166693086)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算