A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xieguanxiong 黑马帝   /  2012-3-2 11:32  /  2060 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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) ,但在主函数中却不能初始化呢?

1 个回复

倒序浏览

回帖奖励 +1

本帖最后由 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届黑马那儿发问题,所以你去那里发吧,这里没人看了……所以可能不能及时回答你的问题……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马