在Java中,抽象类是一种特殊的类,它用于表示无法实例化的类,即不能直接创建抽象类的对象。抽象类的存在是为了作为其他类的父类,它可以包含抽象方法和非抽象方法。
抽象类有以下特点:
-
无法实例化:抽象类无法直接实例化为对象,即不能使用 new 关键字来创建抽象类的实例。
-
包含抽象方法:抽象类可以包含抽象方法,这些方法只有声明而没有具体的实现。抽象方法使用 abstract 关键字声明。
-
可包含非抽象方法:抽象类除了可以包含抽象方法外,还可以包含具体的方法(非抽象方法),这些方法有具体的实现代码。
-
可以有构造方法:抽象类可以有构造方法,但是不能被用来实例化对象,而是被子类调用来初始化子类对象。
-
必须被子类继承或实现:如果一个类继承了抽象类,则该类必须实现抽象类中的所有抽象方法,或者该类也可以是一个抽象类。
抽象类通常用于以下情况:
- 定义一些方法的声明,让子类来实现具体的方法,从而达到统一接口的目的。
- 包含一些具体的方法,供子类直接调用或重写。
- 作为其他类的基类,提供一些公共的功能或属性。
下面是一个关于抽象类的简单示例:
package com.jsu.jie;
public abstract class Animal {
private String name;
public Animal() {
}
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void eat(){
System.out.println(name+"吃东西");
}
public void drink(){
System.out.println(name+"喝水");
}
public abstract void zu();
//定义抽象类
}
package com.jsu.jie;
public class Dog extends Animal {
public Dog() {
}
public Dog(String name) {
super(name);
}
@Override
public void zu() {
System.out.println(getName()+"在撒娇");
}
}
package com.jsu.jie;
public class Test {
public static void main(String[] args) {
Animal dog=new Dog();
dog.setName("哈士奇");
dog.zu();
dog.eat();
dog.drink();
}
}
运行结果为:
哈士奇在撒娇
哈士奇吃东西
哈士奇喝水