【Java SE】抽象类

目录

一.抽象类

1.抽象类的概念

2.抽象类的特性

3,使用抽象类的注意事项

4.抽象类的作用

抽象类实例:


一.抽象类

1.抽象类的概念

  • 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就称为抽象类
  • 抽象类是一种不能被实例化的类,通常用于定义其他类的通用结构和行为
  • 抽象类声明:通过 abstract ;例如:public abstract class Shape{......}
  • 抽象类是一种类,内部可以包含普通方法属性 ,以及构造方法

2.抽象类的特性

①抽象类不能直接实例化对象

java 复制代码
public abstract class Shape{
    abstract public void draw();
}
java 复制代码
public class Test {
    public static void main(String[] args) {
        //Shape shape = new Shape();
    }

}

②抽象方法不能被 private 和 final 以及 static 修饰

  • 因为抽象方法就是为了让子类重写的

③.抽象类必须被继承,并且继承后的子类要重写父类中的抽象方法;否则子类也是抽象方法,并且子类必须要使用abstract修饰

java 复制代码
public abstract class Shape{
    abstract void draw();
}
java 复制代码
public class Rect extends Shape {
    @Override
    public void draw() {
        System.out.println("画一个矩形....");
    }
}
java 复制代码
public class Test {
    public static void drawShape(Shape shape){
        shape.draw();
    }
    public static void main(String[] args) {
        drawShape(new Rect());
    }
}

④抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类

⑤抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量


3,使用抽象类的注意事项

①抽象类中的抽象方法可以没有具体的实现

②如果一个类中有抽象方法,那么这个类必须是抽象类

③抽象类和普通类的区别在于:抽象类中可以包含从抽象方法


4.抽象类的作用

  • 抽象类本身不呢个被实例化,要想使用,只能创建该抽象类的子类,然后让子类重写抽象类中的抽象方法
  • 使用抽象类相当于多了一层编译器的校验

抽象类实例:

java 复制代码
abstract class Animal {
    // 抽象方法
    abstract void makeSound();

    // 具体方法
    void eat() {
        System.out.println("Eating...");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.makeSound(); // 输出: Bark
        dog.eat();       // 输出: Eating...
    }
}
 

相关推荐
吹什么轩5 小时前
c++复习:模拟实现list来更好的理解和应用list
开发语言·c++
程序员黑豆5 小时前
Java入门第一步:从零开始编写你的第一个Hello World程序
java·前端·ai编程
小白学大数据5 小时前
Python 爬虫实战:抓取汽车之家二手车成交价格与里程数据
开发语言·爬虫·python·汽车
深盾科技_Virbox5 小时前
软件加密工具怎么选:试用验证、采购成本与授权范围
开发语言·安全·软件需求
A_cainiao_A6 小时前
C++20:std::stop_source让线程说停就听
开发语言·c++20
Jazz_z6 小时前
如何用Python将彩色PDF一键转为黑白(灰度)
java·python·pdf
青山木6 小时前
Hot 100 --- 在排序数组中查找元素的第一个和最后一个位置
java·数据结构·算法·leetcode
天空之外1366 小时前
Docker安装MySQL 8.4 LTS、Docker安装Redis 7.4.x、Docker安装MinIO
java·mysql·docker
fīɡЙtīиɡ ℡6 小时前
深入学习JAVA并发编程(上)
java·开发语言·学习
zzzll11116 小时前
HashMap、HashTable、ConcurrentHashMap 详细区别与深度解析
开发语言·python