java构造函数浅谈

对于构造函数很多人的认识还是很浅的,很多东西不是很清楚。以下是很小的一段程序带我们进入构造函数易错的地方。

public class main_class {
public static void main(String[] args)
{
new c2();
}
}
class c1
{
String name="aaaaaa";
//父类构造函数
public c1()
{
print();
}
//该构造函数自始至终就没有被调用过
public void print()
{
System.out.println(name);
}
}

class c2 extends c1
{

String name="asdg";
//构造函数:
public c2()
{
System.out.println(name);
}

//重写父类中的print()函数
public void print()
{
System.out.println(name);
}
}
以上输出结果是什么呢?
null
asdg
对类的须知
1、构造函数在实现的时候会最先调用到父类的构造函数。
2、类中的数据成员会在构造函数中进行初始化。(比如说上面的c2中的name会是null)
3、如果子类重写了父类中的方法,那么父类在调用这个重写之后的会直接调用这个被重写的新方法,不会去用父类自己的方法。
4、子类父类都是相对而言的。

现在对以上代码做出详细的解释:
实例话c2(),调用父类的构造函数,父类构造函数再次调用重写之后的print()函数,由于在子类中的name还没有初始化,而父类直接使用了name所以不会出现父类中的name数据,而是直接出现了子类中没有初始化的数据null。


 

转载于:https://www.cnblogs.com/qinyongzhu/p/4957437.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值