什么是抽象类
当定义类的时候,我们通常要定义一些方法来描述该类的行为特征,但是有些方法的实现方式是无法实现是无法确定的,就比如说我们定义一个Animal类时,shout()方法用于表示动物的一些行为,但是不同的动物行为不同,所以我们shout()方法无法准确的去调用该动物的行为。
所以我们就需要用abstract关键字来修饰去定义一个抽象的方法,并且在定义方法时不需要实现方法体。需要注意的是抽象类不可以被实列化,抽象方法是没有方法体的不可以直接调用,如果想要调用抽象类中的抽象方法就需要创建一个子类,在子类中实现抽象类中的抽象方法。
代码实现
//定义抽象类Animal
abstract class Animal {
public abstract void shout();
}
class Dog extends Animal{
public void shout(){
System.out.println("狗叫");
}
}
接口
假如抽象类中的所有方法都是抽象的,那么我们就可与将这个类定义为Java中的另一种形式-接口,接口简单的说就是特殊的抽象类,并且定义接口时不能用class来定义 需要用关键字interface来声明,当然接口中不止含有抽象方法它还包含用default关键字修饰的默认方法,static关键字修饰的静态方法这两种方法是允许有方法体的。但是接口不能包含普通方法。
接口的几个特点
当一个类要实现接口时,假如这个类时抽象类只需要实现接口中的部分抽象方法反之