Java抽象类从入门到精通
引言
在Java面向对象编程中,抽象类是一个非常重要的概念。它为我们提供了一种定义通用模板的机制,让代码更加灵活、可扩展。本文将深入浅出地讲解Java抽象类的相关知识,帮助读者彻底掌握抽象类的使用。
一、什么是抽象类?
抽象类是一种不能被实例化的类,使用abstract关键字修饰。它通常用于定义一组相关类的通用行为和属性,作为“模板”供子类继承和扩展。
public abstract class Animal {
// 抽象类可以包含成员变量、构造方法、普通方法和抽象方法
}二、抽象类的核心特点
1. 抽象类不能实例化
这是抽象类最基本的特性。抽象类不能被直接创建对象,因为抽象类中可能包含没有方法体的抽象方法,如果允许实例化,调用这些抽象方法将没有任何意义。
public abstract class Animal {
public abstract void eat();
}
// 错误:无法实例化抽象类
// Animal animal = new Animal();2. 抽象类中不一定有抽象方法
抽象类可以没有抽象方法,纯粹作为一个不能被实例化的普通类使用。这样做的主要目的是防止外界创建本类的对象。
public abstract class Utility {
// 没有抽象方法,但仍然不能被实例化
public static void doSomething() {
System.out.println("Doing something...");
}
}
// 正确:通过类名调用静态方法
Utility.doSomething();
// 错误:不能创建Utility对象
// Utility util = new Utility();重要规则:有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法。
3. 抽象类可以有构造方法
抽象类可以定义构造方法,虽然抽象类不能被实例化,但构造方法的作用是为子类创建对象时初始化成员变量。
public abstract class Person {
protected String name;
protected int age;
// 抽象类的构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public abstract void work();
}
public class Student extends Person {
private String school;
public Student(String name, int age, String school) {
super(name, age); // 调用父类构造方法初始化name和age
this.school = school;
}
@Override
public void work() {
System.out.println(name + "在学习");
}
}4. 抽象类的子类规则
当一个类继承抽象类时,必须遵循以下规则之一:
- 要么重写抽象类中的所有抽象方法
- 要么子类也声明为抽象类
// 情况1:子类重写所有抽象方法
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
// 情况2:子类也是抽象类
public abstract class Bird extends Animal {
// 可以选择不重写抽象方法,但自身必须是抽象类
public abstract void fly();
}到此这篇关于Java抽象类详解:从入门到精通的文章就介绍到这了,更多相关java抽象类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java上传文件错误java.lang.NoSuchMethodException的解决办法
今天小编就为大家分享一篇关于Java上传文件错误java.lang.NoSuchMethodException的解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-01-01
Spring Boot + Jpa(Hibernate) 架构基本配置详解
本篇文章主要介绍了Spring Boot + Jpa(Hibernate) 架构基本配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-05-05
Springboot测试类运行出现No test were found的问题及解决
文章总结:解决Spring Boot项目运行报错的问题,通过启动主程序、检查项目结构、删除并重新构造模块、导入pom.xml文件以及rebuild项目,最终成功运行主程序2026-02-02


最新评论