5.Java中抽象类和接口
抽象类与接口
- 相同
- 不同
- 先从抽象类说起
- 再从接口说起
相同
1.两者都不能实例化,因为他们都不全。(例如可以实例化一个苹果,但是不能实例化水果)
2.一个类可以实现多个接口,但是只能继承一个抽象类
3.如果这个类实现了接口或者继承了抽象类,就必须把其中抽象方法全部实现(哪怕不重写也要实现)
不同
先从抽象类说起
1.抽象类可以实现构造器(super)
2.抽象类有具体方法和抽象方法(抽象类是有一个或多个抽象方法。抽象方法是声明一个方法但不实现,由子类实现。)
3.抽象类中成员可以被关键词public,protect,private修饰。
4.抽象类可以定义成员变量(如setname()与getname()方法,设置抽象类的name与获取name)
5.抽象类里面可以没有抽象方法,因为可以有具体方法啊。但是有抽象方法就必定是抽象类。
6.抽象类中有静态方法(通过实现子类来调用父类的静态方法)
7.一个类只能继承一个抽象类。
再从接口说起
1.接口中不能定义构造器
2.接口中的方法全是抽象方法(换句话就是无具体方法和静态方法)
3.接口中成员只能用关键词public修饰
4.接口中成员变量都是常量(不可再修改,例如int中Integer.MAX_VALUE)
5.一个类可以实现多个接口