面向对象(三)

抽象类

一.实例

描述:
  • 定义一个抽象类Shape,具有受保护类型的x和y属性,以及公有的抽象方法获得面积。
    Rectangle类继承于Shape类,在构造方法中给父类属性x和y初始化,并重写父类中求面积的抽象方法。
    Triangle类也继承于Shape类,在构造方法中给父类属性x和y初始化,并重写父类中求面积的抽象方法。
    Cube类继承于Rectangle类,独有的属性是height,其构造方法需要调用父类的构造方法完成对x和y的初始化(立方体的底面长和宽),并对height初始化;独有的方法是求体积。
    创建上转型对象,求矩形的面积和三角形面积。
    创建对象,求立方体的体积。

二.相关代码

1.ShapeTest
主程序.png
2.Shape类
Shape.png
3.Rectangle类
矩形.png
4.Triangle类
三角形.png
5.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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容