子类实例化前父类会实例化?所以抽象类能被实例化?

占占 2013-06-24 03:29:01
实例化的定义:实例化一个对象,其实就是在内存中开放一个空间,用于存储新的产物。(来自百度百科)
如果是这么个定义的话,抽象类里除了有抽象方法外,可以有属性和实现方法,而且其子类能对抽象父类的属性和非抽象方法进行调用。那么就是说,抽象父类在内存中也是有一定空间的,只是不能new罢了?
...全文
391 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
占占 2013-06-25
  • 打赏
  • 举报
回复
谢谢各位 我懂了
小9 2013-06-25
  • 打赏
  • 举报
回复
虚拟机能干的事,你不能干; 代码中不能显式实例化抽象类。
wleexi 2013-06-25
  • 打赏
  • 举报
回复
不能直接实例化。。 子类实例化的时候会先从继承树的顶端开始实例化, 这么说明白了么
北吹 2013-06-25
  • 打赏
  • 举报
回复
引用 2 楼 Aries_zz 的回复:
[quote=引用 1 楼 ffc253605481 的回复:] 楼主的理解完全正确.在java中所有类的父类都是Object。在所有类进行初始化的时候都会调用Object的初始化方法,注意初始化方法并不是构造方法,初始化完成后就在内存中存在(这个过程就是类加载过程)。抽象类也一样有初始化方法。只不过我们在进行类实例化的时候比如通过new 关键字产生实例,java语言不允许抽象类有实例产生,所以抽象类不能被实例化。
抽象类不能实例化的话,那怎么可以通过子类调用他的属性和方法呢? 究竟Java实例化的定义是什么?[/quote] 你要把实例化和初始化分辨开来,父类初始化并不是又创建一个父类的对象,而是把父类中定义的对象相关的属性都初始化,因为这些属性子类对象也是拥有的。 所以为了保证子类对象的完整性,要从最底层的父类开始,逐级初始化,所有初始化都完成后才会生成一个完整的子类对象。
zhangpeng455547940 2013-06-25
  • 打赏
  • 举报
回复
分清楚类的实例化与对象的实例化,多态的核心机制哦
占占 2013-06-25
  • 打赏
  • 举报
回复
引用 1 楼 ffc253605481 的回复:
楼主的理解完全正确.在java中所有类的父类都是Object。在所有类进行初始化的时候都会调用Object的初始化方法,注意初始化方法并不是构造方法,初始化完成后就在内存中存在(这个过程就是类加载过程)。抽象类也一样有初始化方法。只不过我们在进行类实例化的时候比如通过new 关键字产生实例,java语言不允许抽象类有实例产生,所以抽象类不能被实例化。
抽象类不能实例化的话,那怎么可以通过子类调用他的属性和方法呢? 究竟Java实例化的定义是什么?
ffc253605481 2013-06-24
  • 打赏
  • 举报
回复
楼主的理解完全正确.在java中所有类的父类都是Object。在所有类进行初始化的时候都会调用Object的初始化方法,注意初始化方法并不是构造方法,初始化完成后就在内存中存在(这个过程就是类加载过程)。抽象类也一样有初始化方法。只不过我们在进行类实例化的时候比如通过new 关键字产生实例,java语言不允许抽象类有实例产生,所以抽象类不能被实例化。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧