抽象类
一.实例
描述:
- 定义一个抽象类Shape,具有受保护类型的x和y属性,以及公有的抽象方法获得面积。
Rectangle类继承于Shape类,在构造方法中给父类属性x和y初始化,并重写父类中求面积的抽象方法。
Triangle类也继承于Shape类,在构造方法中给父类属性x和y初始化,并重写父类中求面积的抽象方法。
Cube类继承于Rectangle类,独有的属性是height,其构造方法需要调用父类的构造方法完成对x和y的初始化(立方体的底面长和宽),并对height初始化;独有的方法是求体积。
创建上转型对象,求矩形的面积和三角形面积。
创建对象,求立方体的体积。
二.相关代码
1.ShapeTest
主程序.png2.Shape类
Shape.png3.Rectangle类
矩形.png4.Triangle类
三角形.png5.Cube类
立方体.png三. 注意点
1.super关键字的三个作用
-
访问父类属性
image.png
调用父类构造方法
image.png
调用父类成员方法
2. 抽象类的说明
- 抽象类中可以有抽象方法和非抽象方法共存
如果一个类中含有抽象方法,则该类一定是抽象类
子类如果继承抽象类,必须强制重写父类中的抽象方法!
3.final关键字的说明
- final修饰的变量就是常量
final修饰的类不能被继承
final修饰的方法不能被子类重写
4.声明抽象方法和非抽象方法的区别:
- 抽象方法不实现方法体;(无花括号)
- 抽象方法实现方法体;(有)
接口
说明:
- 和抽象类相似,但是更严格
接口中只能有抽象方法
接口中不能声明属性
一个类可以实现多个接口 - 关键字abstruct 允许在类中创建没有定义的方法——接口部分,但是没有提供具体的实现。interface关键字将产生一个完全抽象的类,该类中的所有方法都是抽象的。我们称这种类为接口。把关键字class用interface代替。
- 接口中的成员修饰符是固定的:
成员常量:public static final
成员函数:public abstract
由此得出结论,接口中的成员都是公共的权限。
抽象类与接口的区别:
链接如下:https://blog.csdn.net/jjjjjj123321/article/details/54135413
网友评论