抽象类(abstract)
描述一个事物,却没有足够的信息,这时就将这个事物称为抽象事物
特点:
1、抽象方法一定定义在抽象类中,需要抽象关键字定义。
2、抽象类不能实例化。不能用new关键字创建对象。
3、只有子类覆盖了所有的抽象方法后,子类具体化,子类就可以创建对象。
如果没有覆盖所有的抽象方法,子类还是一个抽象类。抽象类是不断的 向上抽取而得来的。抽取了方法的声明而不确定具体的方法内容,由不同的子类来完成具体的内容
接口(interface)
- 接口中常见的成员有两种:1、全局常量 2、抽象方法;成员都是public修饰
- 特点:
1、接口不可以实例化。
2、需要覆盖了接口中的所有的抽象方法的子类,才可以实例化。
否则该子类还是一个抽象类
3、接口是用来被实现的(implements)
JAVA中通过接口来解决多继承的问题(方法的主体不同),即implements(将多继承转化为多实现)
避免了单继承的局限。对一个子类进行扩展功能时,可以使用该类implements一个接口。
继承是为了获取体系的基本功能。想要扩展功能可以通过实现接口完成
接口与接口之间的关系为继承关系,而且可以多继承。
为了方便创建inter接口的子类对象,可以用一个类先把接口中的所有方法都空实现。该类创建对象没有意义,所以可以将该类抽象。
接口的思想
1、接口出现扩展了功能
2、接口其实就是暴露出来的规则
3、接口的出现降低了耦合性。解耦抽象类与接口
类用于描述事物共性的基本功能,用class定义父类,即抽象类
接口用于定义的都是事物的额外功能
区别:
1、类与类之间 继承关系。 is a
类与接口之间 实现关系。like a
2、抽象类中可以定义抽象和非抽象的方法,子类可以直接使用或者覆盖使用
接口中定义都是抽象方法,必须实现才能使用。