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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 hxianm 于 2013-6-7 11:56 编辑

public class  test
{
        public test()
        {
                System.out.print("2");
        }
        public static void main(String[] args)
        {
                test s=new test();
                //test s;
                //s. test();
                System.out.println("1");
        }
}
为什么不能通过s.test();引用test()方法?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

15 个回复

倒序浏览

public class Test {
  public void test()  无返回值是必须定义成void
    {
            System.out.print("2");
    }
    public static void main(String[] args)
    {
            Test s=new Test();   java中区分大小写
            //test s;
            s. test();
            System.out.println("1");
    }
}
建议将代码好好看一遍,主函数是静态的 只能直接调用静态对象,非静态方法都可以访问
回复 使用道具 举报
new  一个test对象时,test()方法已经被调用了。test()为构造方法,是对象被创建时给对象元素附初始值的。显然就不能在对象已经创建好了再去调用构造函数。
回复 使用道具 举报
本帖最后由 风乐 于 2013-6-6 13:23 编辑
  1. class  test
  2. {
  3.         public test()<font color="#ff8c00">//lz注意,这个是构造函数,是用来初始化对象用的</font>
  4.         {
  5.                 System.out.print("2");
  6.         }
  7.         public static void main(String[] args)
  8.         {
  9.                 test s=new test();<font color="#ff8c00">//这里new了后便直接使用了构造函数进行初始化</font>
  10.                 //test s;
  11.                 //s. test();
  12.                 System.out.println("1");
  13.         }
  14. }
复制代码
对象调用方法必须有返回值(没具体返回类型也必须标明void),构造函数不能有这种修饰,用对象调用其无意义的。lz注意区分一般方法和构造方法的区别,能不能用返回类型修饰符这个算一条

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
亲,构造函数和一般成员函数一个很大的不同点就是只能使用一次。
构造函数是用来创建对象时给对象初始化的,不能在一个对象被创建了以后二次使用,所以你既然之前定义一个引用的时候就已经调用的构造函数,后来想要再用一次当然就不可能了啊。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
test()方法实现的是输出语句,没有返回值类型需要写 void。

回复 使用道具 举报
楼主注意啦  构造方法 是不能被调用的!!这个毕老师明确讲过啦  即使你想在子类或者本类中分别调用父类的构造函数或者本类其他重载的构造方法  你都不能使用构造方法的名字 要分别用 super(实参列表)或者this(实参列表)来替代父类构造方法的名字或者本类构造方法的名字
回复 使用道具 举报
构造方法不是初始化用的么, 你创建对象的时候就用构造方法初始化了啊,
你要调用自己再写个 public static void Test(){} ...
回复 使用道具 举报
4968547610317 发表于 2013-6-6 12:22
public class Test {
  public void test()  无返回值是必须定义成void
    {

谢谢解答
回复 使用道具 举报
孙宁洋 发表于 2013-6-6 12:32
new  一个test对象时,test()方法已经被调用了。test()为构造方法,是对象被创建时给对象元素附初始值 ...

谢谢解答
回复 使用道具 举报
风乐 发表于 2013-6-6 13:21
对象调用方法必须有返回值(没具体返回类型也必须标明void),构造函数不能有这种修饰,用对象调用其无意义 ...

谢谢解答
回复 使用道具 举报
小冰块 发表于 2013-6-6 14:58
亲,构造函数和一般成员函数一个很大的不同点就是只能使用一次。
构造函数是用来创建对象时给对象初始化的 ...

谢谢解答
回复 使用道具 举报
王瀛 发表于 2013-6-6 20:23
test()方法实现的是输出语句,没有返回值类型需要写 void。

谢谢解答
回复 使用道具 举报
张歆明 发表于 2013-6-6 23:15
楼主注意啦  构造方法 是不能被调用的!!这个毕老师明确讲过啦  即使你想在子类或者本类中分别调用父类的 ...

谢谢解答
回复 使用道具 举报
JinnyZh 发表于 2013-6-6 23:45
构造方法不是初始化用的么, 你创建对象的时候就用构造方法初始化了啊,
你要调用自己再写个 public static  ...

谢谢解答
回复 使用道具 举报

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