Java之抽象类

Java之抽象类

作者简介: zoro-1,目前大一,正在学习Java,数据结构等

作者主页:zoro-1的主页

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

抽象类概念

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

例1:

例2:

抽象类如何使用

抽象类是一种不能被实例化的类,它只能作为其他具体类的基类来使用,其主要作用是为子类提供统一的接口和约束。在使用抽象类时,需要遵循以下步骤:

  1. 定义抽象类:使用关键字 abstract 定义一个抽象类,可以包含抽象方法和非抽象方法。

  2. 定义抽象方法:在抽象类中定义一个或多个抽象方法,它们没有实现体,只是定义了方法名称、参数类型和返回值类型。

  3. 子类继承抽象类:子类需要继承抽象类,并实现其中的抽象方法,若不实现,则子类也必须声明为抽象类。

  4. 创建子类对象:使用子类进行实例化,即可调用子类中实现的抽象方法。

csharp 复制代码
public abstract class Animal {
    protected String name;
    
    public Animal(String name) {
        this.name = name;
    }
    
    public abstract void speak();
    
    public void eat() {
        System.out.println(name + " is eating.");
    }
}

public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }
    
    public void speak() {
        System.out.println(name + " is meowing.");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat myCat = new Cat("Tom");
        myCat.speak();  // Output: Tom is meowing.
        myCat.eat();    // Output: Tom is eating.
    }
}
 

抽象类的特性

抽象类是一种特殊的类,它具有以下特性:

  1. 抽象类不能被实例化。也就是说,不能直接创建抽象类的对象。

  2. 抽象类可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法,必须在子类中被实现。非抽象方法则可以有具体实现。

  3. 子类必须实现父类中所有的抽象方法,否则子类也必须声明为抽象类。

  4. 抽象类可以有构造方法,但是不能用于实例化对象

  5. 抽象类可以被继承,子类可以使用父类中的非抽象方法,也可以重写父类中的抽象方法。

  6. 抽象类可以实现接口,实现接口中的所有方法。

  7. abstract与final是天敌,不能放在一起

  8. 抽象方法不能是 private 的,抽象方法不能被final和static修饰,因为抽象方法要被子类重写

抽象类的主要作用是为了提供一种抽象的模板,让子类在该模板的基础上进行扩展和实现。

今天的分享到这里就结束了,感谢大家支持,创作不易,希望大家能给博主个三连

相关推荐
程序员黑豆1 分钟前
JDK 下载安装与配置详细教程
java·前端·ai编程
小宇宙Zz31 分钟前
Maven依赖冲突
java·服务器·maven
swordbob33 分钟前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯1 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
十五喵源码网1 小时前
基于springboot2+vue2的租房管理系统
java·毕业设计·springboot·论文笔记
摇滚侠1 小时前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
源分享1 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Flittly1 小时前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
Luminous.1 小时前
C语言--day30
c语言·开发语言
李少兄1 小时前
从原理到实战:Spring IoC/DI 核心知识体系与高频面试题全解
java·后端·spring