赞成巴黎和会签字的:请问关于java初始化的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 16:17:26
本人初学java,知道构造函数可以用来初始化,老师说,创建实例时如果没有构造函数,则系统自己帮你创建隐式构造函数;如果有构造函数,无论有参或无参,系统认为你已经定义了构造函数,不会帮你创建构造函数了所以,下面写法错误:
class Hat{
Hat(int i){}
Hat(double d){}
}
在另一类中写
new Hat();
但我有看到书上这么说:
class Counter{
int i;
Counter(){i=7}
//..
书上说i首先会被置0,然后变成7.
我想问的是:既然Counter类已经定义了构造函数,那就应该实例化的时候直接就调用Counter(){i=7},而不会先由默认的构造函数先将i置0.
这个问题困扰我很久了,希望大家帮忙,不胜感激!

在java里如果声明的变量没有初值的话,那就默认设置为0
这样的问题你困扰什么,你不要太去想这样的问题,很浪费时间的,只要你知道在用的时候是什么效果就好了

当一个类被实例化的时候,属性已经方法会首先被实例,然后会执行构造函数,也就是首先定义了int i;(并被自动赋为了0),然后执行了构造函数里的i=7,书上说的没有错,就是这样

Counter和Hat有什么关系阿?不明白你在说什么,要是如果counter继承了hat那么就是对的,因为在构造的时候是先调用父类的构造函数再调用子类的