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修饰,因为抽象方法要被子类重写

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

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

相关推荐
姓刘的哦11 分钟前
RK3568开发板运行Qt
开发语言·qt
刘晓倩16 分钟前
Python3的Sequence
开发语言·python
_院长大人_17 分钟前
Spring Boot 客户端设计示例:自动刷新 Token 并重试接口调用(Springboot Starter 封装)
java·spring boot·后端
卷到起飞的数分24 分钟前
19.Spring Boot原理1
java·spring boot·后端
消失的旧时光-194326 分钟前
彻底理解 synchronized:实例锁、类锁与自定义锁的原理和最佳实践
java·开发语言
开源之眼37 分钟前
github star 较多的Java双亲委派机制【类加载的核心内容加星】
java
编程火箭车39 分钟前
【Java SE 基础学习打卡】19 运算符(中)
java·java入门·运算符·编程基础·赋值运算符·复合赋值·自增自减
是一个Bug39 分钟前
Spring事件监听器源码深度解析
java·数据库·spring
蜂蜜黄油呀土豆43 分钟前
ThreadLocal 深度解析:它解决了什么、原理是什么、如何正确使用(含代码与实战建议)
java·并发编程·内存泄漏·threadlocal
45288655上山打老虎1 小时前
【智能指针】
开发语言·c++·算法