黑马程序员技术交流社区
标题:
static小问题
[打印本页]
作者:
xieguanxiong
时间:
2012-3-2 11:32
标题:
static小问题
class Person
{
String name;
static String country = "cn";
public void PersonTest(String name,String country)
{
this.name = name;
this.country = country;
}
}
class PersonTest
{
public static void main(String[] args)
{
PersonTest p = new PersonTest("sad","asd");
System.out.println(p.name+p.country);
}
}
问题:为什么在Person类中可以定义public void PersonTest(String name,String country) ,但在主函数中却不能初始化呢?
作者:
王亚男
时间:
2012-3-2 14:45
本帖最后由 qwert 于 2012-3-2 14:48 编辑
晕,你在Person类中定义了一个PersonTest方法,而在PersonTest类中使用Person类中的PersonTest方法,当然不能初始化。。。
因为你PersonTest类中有个默认空参数的构造方法PersonTest(){}
然后你创建了PersonTest类的对象去调用Person类的变量,它俩又没有继承关系,当然不可能成功。。。
所以,你的问题根本不在于static,而是你创建对象与调用方法都用错了。
按照你的意思应该是如下表达:
class Person
{
String name;
static String country = "cn";
public void PersonTest(String name,String country)
{
this.name = name;
this.country = country;
}
}
class PersonTest
{
public static void main(String[] args)
{
Person p = new Person(); //这里你想调用Person类的方法,应该创建Person类的对象
p.PersonTest("张三","CN");//你调用的是Person类有参数的PersonTest方法而不是PersonTest类中的构造方法,PersonTest类中的构造方法你没有定义,所以有个默认空参数构造函数。
System.out.println(p.name+" "+p.country);
}
}
复制代码
最后,现在都在第8届黑马那儿发问题,所以你去那里发吧,这里没人看了……所以可能不能及时回答你的问题……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2