1.抽象类和接口的区别和使用场景
抽象类定义:用abstract关键字修饰的类就是抽象类
注意:
- 不允许final修饰抽象类或抽象方法(final关键字修饰的类不能被继承,final修饰的方法不能被重写,这样的话,定义一个没有具体实现的方法和类是么有意义的)。
- 也不允许static关键字修饰抽象方法(static关键字修饰的方法是通过方法名直接访问,他不能访问实例变量和实例方法,他就只能调用本身的方法,不具备用上转型对象调用子类方法的能力,也是没有意义的
- 抽象类中可以有抽象方法,也可以没有抽象方法
接口的定义:用interface关键字修饰的类。
注意:
- 接口中只有抽象方法,接口中常量都是用public修饰,方法都是用public abstract修饰,我们在定义时,这些修饰符,系统都是帮我们自动省略的。
- 一个类可以实现一个或者多个接口,接口名之间用逗号隔开。
- 如果非抽象类实现接口,需要重写里面所有的方法,抽象类可以重写接口中的方法,也可以直接拥有接口中的方法。
区别:
1.接口和抽象类都不能实例化,接口必须是abstract方法,而抽象类不用。
2.接口可以用于多继承。抽象类只能继承一个。
3.接口只能有常量,抽象类可以有常量和变量。
4.