抽象类
对于一些父类中准备重写的方法,如上一篇 多态 中提到的Cal类中的getResult(),并没有具体实现,只是为了不报错写了一个return 0;
这种只是定义了一个标准,规范,自己没有实现的方法,可以声明为抽象方法
public abstract int getResult();
如果报错
// Abstract method in non-abstract class
这是因为有抽象方法的类必须是抽象类,所以将类声明为抽象类就好了
抽象类:
1、抽象方法是没有方法体,如果这个类里面有抽象方法,这个类必须变成抽象类。
2、如果这个类是抽象类,并不要求这个类一定要有抽象方法
3、抽象类里面可以有普通方法,也可以有抽象方法。
4、如果一个类是抽象类,那么这个类就不能被new实例化,只能被其他类继承。
5、抽象方法可以理解为父类(抽象类)定义的一个模板或者规范(自己本身不实现),
子类必须实现这个抽象方法,如果子类不想实现这个方法,那么这个子类也必须要变成抽象类。
了解了抽象类的概念我们介绍一下接口
简单来说
接口是一个纯粹的抽象类(接口里面所有的方法都是抽象方法)
接口就是一个规范,他没有提供任何是实现,具体的功能由实现接口的子类去实现。
特点:
1、接口是一个纯粹的抽象类,接口里面的方法都是抽象方法 public abstract。
2、接口里面所有的属性public static final
final:最终的意思
final变量:这个变量就不能被修改,常量 , 接口里面: public static final double PI = 3.1415;
final类:这个类就不能被继承
final方法:这个方法就不能被重写