Java抽象类

    技术2023-12-27  66

    抽象类

    所有图形为一个图像类,而这个图像类需要实现其中的方法,将这个图形类实例化的子类画出来。这是有问题的,给你一个模糊的概念,图形,并让你画出来,怎么画?它的子类是什么样的?不知道。这样定义的一个类就是抽象类。

    因此,抽象类就有以下要求

    抽象类不可实例化子类抽象类含有关键词 “abstract” (因此,只要一个类中含有它,就为抽象类)继承于抽象类的子类必须重写抽象方法(这里也产生了一个问题,不需要这个方法的子类也必须的重写这个方法,这就造成内存消耗、整体体积变大。再加上,一个子类又不能够多继承。因此产生——接口)

    接口

    接口的说明:

    方法只能是public、abstract没有声明默认public在接口中定义的任何字段都自动是static和final的。接口需要在定义类的时候就实现。例:class A implements Interface{ }继承多个接口。例:class B “implements” 接口1,接口2,…,接口n{ }还可以接口继承接口。 例:interface interface_A{} interface interface_B extends interface_A { }接口对象可以利用子类对象的向上转型进行实例化

    因为接口是抽象类、抽象类延申、派生类,所以接口中定义的方法都是没有方法体的。继承接口后的子类必须要覆盖所有的抽象方法。

    既然这样,为什么不如直接在子类中定义各自的方法呢?(拿画出图形(draw())这一方法举例)

    用接口定义方法还会多出许多行代码,而在子类中重写方法的话,肯定会增加代码的出错率,为何不直接在子类中定义draw()方法,而要继承接口后重写?

    以下答案转载自知乎

    链接: https://www.zhihu.com/question/20111251/answer/14012223.

    对回答总结一下

    一、方便管理、使用、维护。(看到实现这个方法就这到这个方法的作用,而避免了在具体一个类中,看着这一方法不知道是干嘛用的。) 二、保障程序安全性。(我们使用空调通过遥控器控制它,而不是我们在空调内部去操作空调,这一定程度上保证了空调的完整、安全。类比程序,也是如此。知乎中那篇KFC例子个人认为很容易理解)

    Processed: 0.057, SQL: 10