📜  Java抽象类和具体类的区别(1)

📅  最后修改于: 2023-12-03 15:16:35.587000             🧑  作者: Mango

Java抽象类和具体类的区别

在Java编程语言中,抽象类和具体类是两种不同的类别。本文将介绍Java抽象类和具体类的定义、用法、以及区别。

定义
抽象类

抽象类是一种不能被实例化的Java类。它的目的是为了规范其子类的行为,为子类提供一个通用的接口。抽象类通常包括抽象方法,这是一个没有实现的方法,仅仅只是一个声明。

具体类

具体类是Java中常见的类别。它拥有自己的属性和方法,可以被实例化,并可以被其他类继承。

用法
抽象类

抽象类通常被用来定义具体类的行为和属性。它可以包含抽象方法和非抽象方法。子类继承抽象类后,需要实现所有的抽象方法,并可以根据自己的需求来修改或扩展非抽象方法。

具体类

具体类通常被用来表示实际的对象。它可以被实例化,并且具有自己的属性和方法。在实现具体类时,程序员可以使用已有的类作为其父类,从而减少代码的重复性。

区别
定义

抽象类和具体类的定义不同。抽象类是一种让其他类继承的类,自身不能够被实例化;而具体类则是可以被实例化,并且具有自己的功能。

方法

抽象类通常包含抽象方法,这些方法只是一个声明,并没有实现。实现抽象类的子类需要实现抽象方法。具体类则没有这个限制。

实例化

抽象类不能被实例化,只能被继承。而具体类可以直接被实例化。

继承

抽象类只能被继承,而具体类可以被继承或实现。

示例
// 抽象类
abstract class Animal {
  public abstract void move();
  public void sleep() {
    System.out.println("Animal is sleeping");
  }
}

// 具体类
class Cat extends Animal {
  public void move() {
    System.out.println("Cat is running");
  }
}

// 实例化
Cat cat = new Cat();
cat.move();
cat.sleep();

在上面的示例中,我们定义了一个抽象类Animal,其中包含了一个抽象方法move和一个非抽象方法sleep。然后我们定义一个具体类Cat,它继承自Animal,并实现了move方法。最后我们实例化了一个Cat对象,并调用了它的move和sleep方法。