什么是抽象类
就是被abstract所修饰的类,父类将所有子类的共性功能向上抽取后,他并不知道每个子类对这个功能的具体实现,所以没必要在父类中给出共性功能的具体实现,而是给出声明即可。所谓给出功能的声明,就是将此功能抽象出来,然后强制子类必须重写抽象功能。
注意事项
- 一旦一个类中,有了抽象方法,那么子类必须为抽象类。
- 一个抽象类中可以没有抽象方法。
- 抽象类中既可以有抽象方法,也可以有非抽象方法。抽象方法强制子类重写。非抽象方法子类继承下去。
- 抽象类不能实例化,可以采取多态的方式间接实例化。
- 抽象类的子类,要么重写父类中的所有抽象方法,要么自己也是一个抽象类。
- 抽象类中有构造方法,用来子类初始化父类用的。
关键字abstract不能与那些共存
- pravite:私有的,不参与继承何谈抽象
- final:最终的修饰方法,方法不重写。修饰类,类不能被继承。
- static:用静态词修饰的不参与继承,故也无意义。
什么是接口
interface,用来定义一些扩展功能,哪些事物,将来想要具备这个功能,可以实现(implements)这个接口,然后对功能做出具体实现。
注意事项
- 用来定义一些额外的功能。
- 接口就是用来定义一些规则(规范),实现功能扩展。
- 接口中成员变量全是静态的公共常量。 public static final 默认修饰符
- 接口中没有构造方法。
- 接口全是抽象方法。public abstract 默认修饰符。
接口和抽象类的区别
- 思想:
抽象类,抽取所有子类的共性功能,并强制子类对共性功能进行重写。
接口,定义的是整个继承体系当中的一些额外功能,哪些类想具备这些扩展功能,可以去实现这个接口。 - 语法:
- 抽象类中有构造方法,接口中没有构造方法。
- 抽象类中既可以有抽象方法,也可以有非抽象方法。接口中全是抽象方法。
- 抽象类中接口有成员变量,也可以有常量。接口中全是公共的静态的常量。
自我理解
因为抽象类中的所有的方法,无论使用不使用都需要去重写,就造成了在编写过程中的麻烦,而接口在实现的过程中,不需要重写那么多,接口可以多实现,也弥补了单继承性质的不足。
转载:https://blog.csdn.net/Junzizhiai/article/details/102556919
查看评论