Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5Mobile wallpaper 6Mobile wallpaper 7Mobile wallpaper 8
665 字
3 分钟
Java:抽象类
2026-03-16

目录#

在Java中,所有的对象都是类描绘的,但是不是所有的类都是用来描绘对象的。

在我们之前的代码中,Dog类继承Animal类,但我们知道Animal是一个抽象的概念,而不是具体的对象,因此有些时候我们只是需要表达动物之间的共性的时候,我们就可以把Animal这个抽象的概念写成抽象类。

抽象类除了不能实例化以外,其他的成员变量,方法函数和构造方法都和普通的类一样。因为不能被实例化,因此抽象类只能被继承后才能使用。

一、抽象类#

抽象类用abstract修饰符表示,实例如下:

public abstract class Animal {
private String name;
private int age;
private double weight;
public Animal(String name, int age, double weight) {
System.out.println("Constructing class Animal");
this.name = name;
this.age = age;
this.weight = weight;
}
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
", age=" + age +
", weight=" + weight +
'}';
}
public void getName() {
System.out.println("Name is " + name);
}
}

可以发现抽象类也有3个成员变量,1个构造方法,2个成员方法,跟普通的类一样。

但是我们能看到在下面的代码中看到抽象类是无法实例化的:

public class TestDemo {
public static void main(String[] args) {
Animal animal = new Animal("mimi", 12, 12);//编译不通过
}
}

二、继承抽象类#

我们可以通过一般的方法继承Animal类:

public class Cat extends Animal{
public Cat(String name, int age, double weight) {
super(name, age, weight);
System.out.println("Constructing class Cat");
}
public void mailCheck()
{
System.out.println("Within mailCheck of Cat class ");
System.out.println("Mailing check to " + getName()
+ " with weight " + getWeight());
}
}

我们可以通过实例化继承了抽象类的子类,并通过子类的向上转型调用父类的方法。

public class TestDemo {
public static void main(String[] args) {
Cat cat = new Cat("mimi", 12, 12);
Animal animal = new Cat("gugu", 2, 3);
System.out.println("Call MailCheck in class Cat");
cat.mailCheck();
System.out.println("Call MailCheck in class Animal");
animal.mailCheck();
}
}

三、抽象方法#

abstract修饰符也可以用于定义成员方法,当声明成员方法的时候,我们并不会进行方法的具体实现,而是把具体实现交给子类解决。

抽象方法有以下两个规则:

1.如果一个类包含抽象方法,则这个类一定是抽象类 2.继承抽象类的子类必须重写抽象类中所有的抽象方法,否则声明自身也为抽象类。

抽象方法没有定义,方法名后面直接接分号,没有花括号。

public abstract class Animal {
public abstract void eat();
}

下一篇真的讲接口了。

Java:抽象类
https://blog.csdn.net/2501_93882415/article/details/159119102?spm=1001.2014.3001.5502
作者
Mem0rin
发布于
2026-03-16
许可协议
MIT

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00