什么是抽象类呢,这又是一个什么类呢,在Java中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。
抽象类的作用在于将许多有关的类组织在一起,提供一个公共的类,如猫会吃东西,狗会吃东西,因为他们都会吃东西,但是不知道他们吃的是什么,所以吃东西这个行为就很抽象,于是可以创建一个吃东西的抽象类,写吃东西的抽象方法。
我们先了解:抽象类中可以每有抽象方法,但是有抽象方法的类肯定是抽象类。
Java中,一个没有方法体的方法,我们定义为抽象方法,如:
public abstract void eat();
我们创建一个羊类一个牛类并继承Animalll抽象类:
public class Sheep extends Animalll {
public void eat(){
System.out.println("吃东西");
}
}
public class Cow extends Animalll{
public void eat(){
System.out.println("吃东西");
}
}
public abstract class Animalll {
public abstract void eat();
}
再在测试类中测试,输出结果都为吃东西,这属于普通类继承抽象类,抽象方法为eat方法,当普通类继承抽象类时,普通类中必须重写抽象类(父类)中所有的抽象方法。
还有就是抽象类继承抽象类时,可以不用重写。
抽象类还有一个特点就是,抽象类无法实例化,即Animalll a = new Animalll();是不被允许的,不过子类为普通类(非抽象类)时,可以用多态方式创建对象,指向子类。