抽象类是否可继承具体类?

博客讨论了抽象类是否可以继承实体类的问题。答案是肯定的,但条件是实体类必须有可供子类访问的构造器。文章通过实例解释了Java中类继承的规则,包括构造器的作用和子类构造器如何调用父类构造器。同时指出,无论抽象还是实体类,都需要遵循这些规则。
摘要由CSDN通过智能技术生成
转帖:[url]http://blog.csdn.net/ckw1988/archive/2009/10/07/4639514.aspx[/url]

关于“抽象类是否可继承实体类”的辨析。

一道java 常见面试题,网上找到的几乎每个 java 面试笔试题大全或集锦里都能找到这道题。

题目如下:


问: 抽象类是否可继承实体类 (concrete class)

答: 抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数


-------------------


答案很明确,可以继承。其实从Object就是个实体类,java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。


关键在于这答案里所说的“前提是实体类必须有明确的构造函数”一句,是什么意思。


一般学习者会写的简单试验代码:


class A{}

abstract class B extends A{}


结果完全正常,编译通过。似乎和“实体类必须有明确的构造函数”完全没有关系。


这个问题涉及到两个个基础知识:

1.

所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值