黑马程序员技术交流社区

标题: 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,而是你创建对象与调用方法都用错了。
按照你的意思应该是如下表达:
  1. class Person
  2. {
  3.     String name;
  4.     static String country = "cn";
  5.         public void PersonTest(String name,String country)
  6.               {
  7.                
  8.                 this.name = name;
  9.                 this.country = country;
  10.                
  11.         }
  12.    
  13. }
  14. class PersonTest
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 Person p = new Person(); //这里你想调用Person类的方法,应该创建Person类的对象
  19.         p.PersonTest("张三","CN");//你调用的是Person类有参数的PersonTest方法而不是PersonTest类中的构造方法,PersonTest类中的构造方法你没有定义,所以有个默认空参数构造函数。
  20.                 System.out.println(p.name+"  "+p.country);
  21.         }
  22. }
复制代码
最后,现在都在第8届黑马那儿发问题,所以你去那里发吧,这里没人看了……所以可能不能及时回答你的问题……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2