接口与抽象类

抽象与接口
1. 抽象和接口都可以声明为对象,只是不能实例化

抽象类是从多个不同的类提取相同的行为的一个集合,既然多个不同类方法的集合,那么也就不存在实实在在的这样的一个对象。
2. 接口是一种特殊的抽象类(是由于抽象类的不足再扩充的)
3. 抽象类的子类可以是抽象类也可以是它的实现类
4. 抽象类里面可以有不是抽象的方法,可以有构造函数,不可以new方式实例化。
   抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,
   而是通过父类的引用来指向子类的实例来间接地实现父类的实例化
   (因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,也就把其父类(抽象类)给实例化了).
   但是:接口是不能被实例化的(接口压根就没有构造函数)

jdk1.8之前
接口
1.多实现
2.变量类型默认且只能为为public static final
3.函数类型默认且只能为public,只能有public类型的静态成员函数,方法都是public abstract
4.非静态成员函数没有方法体,静态成员函数有方法体
5.子类必须实现所有接口函数
6.可以有main方法;可以new一个接口,需要在方法体中实现所有接口函数
7.没有构造器
 
抽象类
1.单继承
2.变量类型不限(静态变量+非静态变量)
3.函数类型不限(静态函数+非静态函数)
4.非静态函数包含没有方法体的抽象函数. 有方法体的普通函数
5.子类可以不覆写父类的抽象方法,但子类也要申明为抽象类;子类可以选择覆写父类的非抽象方法
6.可以有main方法;不可以new一个抽象类
7.可以有构造器
 
Jdk1.8
接口中可以有default类型的方法,实现类可以选择实现该方法
意义:默认方法的主要优势是提供一种拓展接口的方法,而不破坏现有代码。另一个优势为该方法是可选的,子类可以根据不同的需求Override或默认实现。

猜你喜欢

转载自blog.csdn.net/jae_wang/article/details/80215240