A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邝雄伟 中级黑马   /  2013-2-2 15:29  /  1433 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

02.interface Demo1

03.{

04.void function1();

05.}

06.

07.abstract class Demo2

08.{

09.abstract void funtion2();

10.}

11.

12.

13.public class Test5 {

14./*

15.* 想问大家一个问题,希望大家超越自己。

16.* */

17.public static void main(String[] args)

18.{

19./*

20.* 在主函数里无法直接创建接口和抽象类对象的原因,我有三个疑问:

21.* 1,接口和抽象类没有构造函数?

22.* 2,接口和抽象类的构造函数被私有化了?

23.* 3,两者被JVM制动识别了,是一种底层规则吗?

24.*

25.* 求详解。。。。。。。

26.*/

27.}

28.}

2 个回复

倒序浏览
抽象类有构造函数,而接口没有。
但是即便抽象类有构造函数,依然不能new对象。
因为抽象类本身就是由一些事物共性的属性中抽取出的一个抽象体,它不能直接有实体对象。
接口里面只能有抽象方法,它是给事物功能做扩展的,概念上理解,就不应该有实例对象吧?
Java不是死规定什么的,他还是很讲道理滴,就像张老师讲的,你觉得这个地方,按理应该是这样么,那就是这样咯。
构造方法不能被继承的,只是子类在new对象的时候,会调用父类的构造方法,你看,一个抽象类被继承了,那么它的子类在创建对象的时候,会去调用它的构造函数,那么它不得有么?如果没,那这个抽象类的成员变量怎么办?怎么初始化?子类不要了么
至于JVM怎么识别的。。。那我就不知道咯,只能去查资料咯,不管胡说

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
我说下我的看法  我觉得这还是因为JAVA是面向对象来决定的。所有的对象都是通过类来描绘的(就是毕老师说的图纸),但并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类的目的不是用来实例化的,是用来继承的。必须依靠子类来实例化,创建对象。

如果实在要说一个原因我认为就是这是属于java开发的一种规范。也就是规定的(我是这么理解的)
希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马