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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹昌豪 中级黑马   /  2012-5-22 08:32  /  2235 人查看  /  11 人回复  /   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 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

11 个回复

正序浏览
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");       //可以这样调用Person p = new Person(); p.PersonTest();
                 System.out.println(p.name+p.country);
         }
}
回复 使用道具 举报
public void PersonTest(String name,String country)
              {
               
                this.name = name;
                this.country = country;
               
        }
  你在 Person  类中定义了方法 PersonTest

你要是定义构造函数 应该应该是
Person(String name,String country )
{

}


回复 使用道具 举报
刘欢 发表于 2012-5-23 18:20



客气了。
回复 使用道具 举报
刘欢 中级黑马 2012-5-23 18:20:04
9#
贾旭 发表于 2012-5-23 18:16
没法上传图片。把代码放到里就好了。点后,把代码放进去。



回复 使用道具 举报
贾旭 中级黑马 2012-5-23 18:16:56
8#
刘欢 发表于 2012-5-22 10:23
你好 我想问一下你这个格式的文档怎么整的?

没法上传图片。把代码放到<>里就好了。点<>后,把代码放进去。
回复 使用道具 举报
刘欢 中级黑马 2012-5-22 10:23:16
7#
贾旭 发表于 2012-5-22 09:02

你好 我想问一下你这个格式的文档怎么整的?
回复 使用道具 举报
首先 刚看了下 看的我有点头疼 嘿嘿
public void PersonTest(String name, String country) {
                this.name = name;
                this.country = country;
        }
首先这不是一个构造函数,而是Person类的一个成员方法而已,
而你在PersonTest类里面把public void PersonTest当做构造函数【PersonTest p = new PersonTest("sad", "asd");】使用,肯定行不通额
我猜想你的本意应该是想通过构造函数获取静态 country的值 让Person的构造函数传一个值

class Person {
        String name;
        static String country = "cn";
        Person(String name) {
                this.name = name;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public static String getCountry() {
                return country;
        }
        public static void setCountry(String country) {
                Person.country = country;
        }
}
class PersonTest {
        public static void main(String[] args) {
                Person p = new Person("sad");
                System.out.println(p.getName() + " " + p.getCountry());
        }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
构造函数名和类名要一致
回复 使用道具 举报
  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.                 PersonTest p = new PersonTest("sad","asd");//初始化的时候,PersonTest并没有两个字符串参数的构造函数,当然报错了。
  19.                 System.out.println(p.name+p.country);
  20.         }
  21. }
复制代码
回复 使用道具 举报
本帖最后由 魏涞 于 2012-5-22 08:59 编辑

class Person
{
     String name;
     static String country = "cn";
         public void PersonTest(String name,String country) //这里定义了一个成员方法,是对类Person的属性进行赋值,但不是对类PersonTest类的初始化
              {
                 
                this.name = name;
                 this.country = country;
                 
        }
     
}
class PersonTest
{
         public static void main(String[] args)
         {
                 PersonTest p = new PersonTest("sad","asd"); //PersonTest没有定义带两个字符串形参的构造方法,这样当然报错。
                 System.out.println(p.name+p.country);
         }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
PersonTest p = new PersonTest("sad","asd");应该定义类的变量,用类的变量调用PersonTest,Person p=new Person();  p.PersonTest("sad","asd");。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马