我的主函数是这样的,我的目的是想要给类的name进行赋值。然后再对函数内部的构造函数进行调用
public static void main(String[] args) {
// TODO Auto-generated method stub
WithoutVoid wov = new WithoutVoid();//对非金泰变量函数进行调用。对对象进行调用,这样使得我们能够通过这一个条款建立不同的项目。
wov.name = "zhangsan";
WithStatic.WStatic();//对静态变量函数进行调用,不用创建任何对象,不用对函数内部进行多种类型的赋值。
WithoutVoid a_1=new WithoutVoid();//调用无参的构造函数
WithoutVoid a_2=new WithoutVoid("Hello");//调用有参的构造函数
WithoutVoid a_3=new WithoutVoid("Hello_Again");//再次调用有参的构造函数
}
构造函数的类是这样写的,为了让自己更加的了解构造函数有参和无参的区别,还有this关键字的用法:
package how_to_use_static;
public class WithoutVoid
{
String name;
//构造方法/必须与class名字相同/没有返回值
public WithoutVoid()
{
System.out.println("调用了无参的构造函数");
System.out.println("调用了无参的构造函数且非要输出值:" + this.name);
//这个this.name指代的是WithoutVoid.class中指代的name
}
public WithoutVoid(String name)
{
System.out.println("调用了有参的构造函数\n"+
"参数内容为:"+name);//这个name是指代的构造函数的参数所得到的数值
}
}
但是我运行后发现结果是这样的:
调用了无参的构造函数
调用了无参的构造函数且非要输出值:null
调用了无参的构造函数
调用了无参的构造函数且非要输出值:null
调用了有参的构造函数
参数内容为:Hello
调用了有参的构造函数
参数内容为:Hello_Again
疑问:那个null我没有能成功的赋值,如果我想要将这个null改掉该怎么做?
你这两个构造函数都没给name属性赋值
有参构造你要把传进来的参数赋值给类,this.name = name
无参构造要给属性赋值最好给变量一个set方法入口和获取值的get方法,通过set方法赋值
无参构造函数中,没有对成员变量name赋值,为空。可以添加一个setName函数给name赋值。
带参构造函数修改如下:
public WithoutVoid(String name)
{
this->name = name;//给成员变量赋值
System.out.println("调用了有参的构造函数\n"+
"参数内容为:"+name);//这个name是指代的构造函数的参数所得到的数值
}