个人简介
👀个人主页: 前端杂货铺
⚡开源项目: rich-vue3 (基于 Vue3 + TS + Pinia + Element Plus + Spring全家桶 + MySQL)
🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍖开源 rich-vue3 🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧
内容 | 参考链接 |
---|---|
Java基础(一) | Hello World,8种数据类型,键盘录入 |
Java基础(二) | 数组,方法,方法重载 |
Java基础(三) | 类和对象、构造方法 |
Java基础(四) | 字符串、StringBuffer、StringBuilder、StringJoiner |
Java基础(五) | ArrayList |
Java基础(六) | 继承 |
Java基础(七) | 多态 |
Java基础(八) | 包、final、权限修饰符、静态代码块 |
文章目录
- 前言
- 抽象方法和抽象类
- 总结
前言
大家好,这里是前端杂货铺。
本篇文章,我们学习 抽象类 和 抽象方法。
抽象方法和抽象类
抽象方法:将 共性的 行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样的,所以,在父类中不能确定 具体的方法体,该方法就可以定义为抽象方法。
抽象类:如果一个 类中存在抽象方法,那么该类就 必须声明为抽象类。
作用:
- 抽取共性时,无法确定方法体,就把方法定义为抽象的。
- 强制让子类按照某种格式重写。
- 抽象方法所在的类,必须是抽象类。
抽象方法定义格式:
public abstract 返回值类型 方法名(参数列表)
抽象类定义格式:
public abstract class 类名{}
具体格式实例:
public abstract class Person {
public abstract void work();
}
注意事项:
- 抽象类不能实例化
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类可以有构造方法
- 抽象类的子类 要么 重写抽象类中的所有抽象方法,要么 是抽象类
抽象类不能实例化(若可以实例化对象,那么就可以调用抽象类的方法了,与抽象类的初衷是 背道而驰 的)、抽象类中不一定有抽象方法、抽象类可以有构造方法。
上述注意事项的 1、2、3 参照如下代码:
Person.java
public abstract class Person {
private String name;
private int age;
// 作用:当创建子类对象时,给属性进行赋值的
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 抽象方法
public abstract void work();
// 非抽象方法
public void eat() {
System.out.println("吃大餐");
}
}
抽象类的子类 要么 重写抽象类中的所有抽象方法,要么 是抽象类。
1、抽象类的子类 —— 重写抽象类中的所有抽象方法:
public class Student extends Person {
@Override
public void work() {
System.out.println("我的工作是学习");
}
}
2、抽象类的子类 —— 也是抽象类:
public abstract class Teacher extends Person {
}
总结
本篇文章我们学习了抽象方法和抽象类,明白了其含义、作用及注意事项等…
好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!
参考资料:
- Java 基础(bilibili-黑马程序员)
- 菜鸟教程–Java