构造函数与创建对象

首先思考几个问题:

在JAVA中:

一、生成一个对象一定会调用构造函数?调用构造函数是否一定会产生对象?

二、创建子类对象的同时到底有没有创建父类对象啊?

下面提供几种说法,不确保正确性。
说法:
一、
1、对象不是构造函数产生的,它只是创建对象过程中的一步,主要作用是完成初始化,设计初衷是为了在函数运行过程中动态初始化,因为有些变量的初始化需要推迟到运行中完成。

2、java生成一个对象一定会调用构造函数?
a)正确,不论是通过new,还是newInstance产生的对象,都会调用构造函数。
b ) 错误,在某些特殊情况下可以不调用构造方法创建对象。

调用构造函数是否一定会产生对象?
正确,构造函数是初始化对象的必调方法,如果这个方法被调用,意味着肯定有一个对象被创造出来。

二:
1、没有,子类在创建时会调用父类的初始化方法,但没有用到new 加构造方法。所以没有产生对象。new一个构造方法一定产生对象 但在一个类的内部调用本类或父类构造不会产生对象的 把“new”和“调用”区分开就好了。
在自己的构造函数里可以调用父类构造函数super(…),也可以调用本类的其他构造函数this(…)。
如果有的创建父类的对象的话,当父类为抽象类时又如何解释?抽象类是不会能创建对象的。

我的观点:比较认同没有创建对象这一说法。子类调用父类的构造器只是单单的初始化了一下从父类那里继承而来的成员变量或成员方法,并没有去创建一个对象。创建对象需要加上new关键值。
借Malons的一张图来说明this与super:
这里写图片描述

super只是java中的一个关键字。而this可以代表一个对象。如图super只拥有父类可继承变量成员和父类可继承成员方法。而this则可以访问图中所有方法,变量。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值