自学内容网 自学内容网

Java(九)——抽象类、抽象方法

个人简介

👀个人主页: 前端杂货铺
开源项目: 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. 抽象类可以有构造方法
  4. 抽象类的子类 要么 重写抽象类中的所有抽象方法,要么 是抽象类

抽象类不能实例化(若可以实例化对象,那么就可以调用抽象类的方法了,与抽象类的初衷是 背道而驰 的)、抽象类中不一定有抽象方法、抽象类可以有构造方法。

上述注意事项的 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 {

}

总结

本篇文章我们学习了抽象方法和抽象类,明白了其含义、作用及注意事项等…

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. Java 基础(bilibili-黑马程序员)
  2. 菜鸟教程–Java

在这里插入图片描述



原文地址:https://blog.csdn.net/qq_45902692/article/details/140569510

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!