黑马程序员技术交流社区

标题: 抽象类可以没有抽象方法,这是为什么?求答案 [打印本页]

作者: 星宇    时间: 2014-6-30 17:19
标题: 抽象类可以没有抽象方法,这是为什么?求答案
最近学习中看到这个,说至少有一个抽象方法的类是抽象类,但是又说抽象类可以没有抽象方法。求答案。
作者: yuZhe_toString    时间: 2014-6-30 18:14
谁说的?抽象类必须要有抽象方法,除非是你继承了一个抽象类,而在本类中没有实现父类抽象方法,虽然表面看起来没有抽象方法,但是本质上是必须有的,只不过在父类里。这种说法就像文字游戏一样,没有实质性的意义。
作者: Whero    时间: 2014-6-30 19:28
如果一个类中有抽象方法了,那么它一定是抽象类;继承它的子类如果没有实现它的全部抽象方法,子类也是抽象类;但是抽象类中也可以没有抽象方法,只是当定义为抽象类了之后该类就不能够被实例化了。
作者: fantacyleo    时间: 2014-6-30 20:27
抽象类可以没有抽象方法,这是语法上允许你这样做。至于这样做有无意义,取决于程序员
作者: 张盼    时间: 2014-6-30 20:40
抽象了可以没有抽象方法,这样做的目的是不被创建对象
有抽象方法的类一定是抽象类,抽象类不一定有抽象方法


作者: 星宇    时间: 2014-7-1 10:51
yuZhe_toString 发表于 2014-6-30 18:14
谁说的?抽象类必须要有抽象方法,除非是你继承了一个抽象类,而在本类中没有实现父类抽象方法,虽然表面看 ...


貌似子类继承抽象类是必须实现其父类所有抽象类方法的。
作者: Leung    时间: 2014-7-1 11:02
同求!!!
作者: 人心如水    时间: 2014-7-1 15:32
我总结了下抽象类:
抽象类里面必须有抽象方法,可以有非抽象方法(原因不知道,找不到“一定没有”的理由)。
抽象类不能创建对象,以为调用抽象方法没意义。
抽象类一定是父类,是不断抽取来的。
而且抽象类有构造函数,给子类初始化的。
子类如果想创建实例就必须复写抽象类里的抽象方法,否则还是抽象类。
abstract不能跟private final static 关键字共存,原因很简单。
作者: 人心如水    时间: 2014-7-1 15:35
抽象类和接口的区别里面有一条:
      抽象类为部分方法提供实现,避免子类重复实现这些方法,接口只能包含抽象方法(只能)。
作者: blz01003hm    时间: 2014-7-1 15:52
貌似有了抽象方法的类就是父母包办,没有抽象方法的类是自由恋爱。
作者: yuZhe_toString    时间: 2014-7-2 12:17
星宇 发表于 2014-7-1 10:51
貌似子类继承抽象类是必须实现其父类所有抽象类方法的。

。。。抽象类继承抽象类需要实现父类抽象方法吗?
作者: clf900630    时间: 2014-7-2 15:37
有一个哥们的理解很到位,学习了
作者: _qishiwobusha_    时间: 2014-7-2 23:38
1 如果类中定义了抽象方法那么这个类一定是抽象类,这是   “至少有一个抽象方法的类是抽象类”  的另一种好理解的表示。类中可以定义多个抽象方法,但是如果定义了,哪怕只有一个抽象方法,那么就是抽象类。

2 抽象类中是可以没有抽象方法的。
第一 抽象类不能直接new 对象,有一些应用中,就是为了防止 直接 创建 这种类的对象。jdk 中就有此类应用。


作者: 客剑    时间: 2014-7-2 23:48
路过,学习了

作者: lijinhe    时间: 2014-7-3 14:09
yuZhe_toString 发表于 2014-7-2 12:17
。。。抽象类继承抽象类需要实现父类抽象方法吗?

如果你要使用父类中的抽象方法,那你必须要实现
作者: 臭豆腐    时间: 2014-7-3 18:14
学习学习
作者: haohanlinyu    时间: 2014-7-3 23:01
张盼 发表于 2014-6-30 20:40
抽象了可以没有抽象方法,这样做的目的是不被创建对象
有抽象方法的类一定是抽象类,抽象类不一定有抽象方 ...

总结得很到位




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2