总是有人在学习完接口会感觉,咦?这和抽象类有什么太大区别?用起来好像还不如抽象类.抽像类的限制比他小,定义的东西多(接口:定义抽象方法 抽象类:抽象方法和非抽象方法),为什么非要使用接口.其实想到这个问题很好,说明起码思考了.但是接口和抽象类还是有区别的.
首先:先来看相同点,二者都是抽象的,不能被实例化.
不同点
接口使用interface来定义,使用implements用来实现接口,接口可以多实现.
使用接口必须全部实现接口里面的内容.
接口中只能定义抽象方法,必须由子类去实现
接口里定义的变量只能是公共的静态的常量
接口主要用来抽象功能.
接口是对对象的抽象
public interface jieko{
void eat();//接口里的方法
}
抽象类使用abstract来定义.,抽象类需要被继承(extends),只能单继承
抽象类中可以定义抽象方法和非抽象方法,子类继承后,
可以直接使用非抽象方法。
抽象类中的变量是普通变量
抽象类主要用来抽象类别
抽象是对根源的抽象
抽象类可以有构造方法,接口不能
abstract class chouxianglei{
private String name;
abstract double study();//抽象方法
void sleep(){//非抽象方法
System.out.println("睡觉");
}
}
如果要是项目比较大的时候抽象类只能单继承,不方便,很多需求达不到,但是接口的多继承为这种事情提供了方便.
网友评论