抽象类
在了解抽象类之前,先了解什么是抽象方法。抽象方法就是只有方法声明,没有方法体,并且使用abstract修饰的方法。
public abstract void eat();
那么抽象类也是一个使用abstract修饰的类。
public abstract class Animal {
public abstract void eat();
}
抽象类的出现是为了继承而出现的,抽象类是类和类之间有共同特征,然后将这些共同特征提取出来,形成抽象类。创建了一个抽象类后,不去继承它,就失去了创建它的意义。
接口
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。在java中体现在对行为的抽象。使用interface修饰类,类去实现接口用implements表示。
public interface Demo1 {
public static final int age = 10; //接口中的成员变量,只能是常量,默认修饰符:public static final
// public Demo1(){} 接口中没有构造方法
// public void eat(){} 接口中不存在非抽象方法
public abstract void eat();
}
抽象类和接口的共同点和区别
共同点:都不能实例化;都可以被继承。
不同点:
成员变量:抽象类:变量,常量。 接口: 常量。
构造方法:抽象类有构造方法,接口没有。
成员方法:抽象类抽象方法和非抽象方法都有,接口只能是抽象方法。
设计上:抽象类是对一种事物的抽象,包括属性的行为;接口是对行为的抽象,主要是行为。