抽象类
- 抽象类生来就注定它是要被继承的,如果没有任何一个类去继承它的话,那么也就失去了它的意义;抽象方法生来就是要被重写的,而且是必须重写。
-
特点:
1.使用abstract修饰;
2.抽象类中可以没有抽象方法;但是有抽象方法的类必须是抽象类;
3.子类若是抽象类,则可以不实现父类的抽象方法;子类若不是抽象类,就必须实现父类的抽象方法。
4.抽象类有构造方法,但是不能直接调用其构造方法来实例化抽象类,必须在子类中调用。
5.抽象类中可以有方法没有方法体,即抽象方法;但是普通类中的方法必须有方法体。
image.png
抽象类
- abstract修饰的类为抽象类,此类不能有对象,即无法对此类进行实例化,就是不能new;
- 有抽象方法的类必须是抽象类;
抽象方法
- abstract修饰的方法为抽象方法,此方法不能有方法体;
-
子类若是抽象类,则可以不实现父类的抽象方法;子类若不是抽象类,就必须实现父类的抽象方法。
image.png
image.png
接口
- 特点:
1.接口可以看作是特殊的抽象类,需要interface关键字进行定义,用implements关键字来实现接口。
2.接口中可以定义属性,并且在定义时必须初始化该属性,接口中定义的属性的值不允许修改,常量。
3.接口中定义的方法均为抽象方法
4.接口可以继承接口,但是不能继承类,并且一个接口可以继承多个接口。
5.接口的实现类若不是抽象类,就必须实现接口中的所有方法。若实现类是抽象类,可以选择性的实现接口中的任意多个方法。
6.接口不算类,或者说是“特殊类”,所以定义接口不需要class
那问题来了:既然接口是特殊的抽象类,那为什么要用接口呢?
因为一个类只能继承一个父类,不能多继承,所以需要接口,可以实现多个接口。接口扩展的是对象的行为。
image.png
image.png
抽象类和接口的区别
image.pngimage.png
网友评论