抽象类与接口的理解
一、什么是抽象类
简单的说就是类名前面加上abstract这个修饰符,它不但可以修饰类,而且可以修饰方法;
详细说就是它是某一群体对象的共性集合体,比如苹果,香蕉,菠萝...这些都属于水果,那么水果就是一个抽象类,它具有苹果,香蕉,菠萝...的共性:重量,甜度,大小等;
二、抽象类遵循的规则
没有规矩不成方圆,既然你加入了我抽象类的行列那就必须遵循我的规则:
[1] 抽象类的修饰符只能Public,Protect的;
因为抽象类是要被子类去继承的,如果没有子类去继承这个抽象类,那么它也没有存在的必要;
[2] 抽象类不能被实例化;
个人认为是因为抽象类中的抽象方法是没有实现的,就算能被实例化也没有意义,或者把这个理解为一个硬性规定;
[3]子类必须实现继承的抽象类中所有的抽象方法;
上面提到抽象方法中是没有实现的,所以子类中必须去实现这些抽象方法,否则子类必须定义成abstract;
[4]抽象类中的方法不一定要是abstract的,变量的类型也没有限制;
三、什么是接口
interface Book {
public abstract void add ();
}
这段代码就是一个简单的接口,接口也是抽象类,只不过一些方面的限制,比抽象类还要严格;
[1] 接口中的变量必须声明为public static final;
[2]接口中的方法必须都是抽象的;