黑马程序员技术交流社区

标题: 求解,为什么不能通过s.test();引用test()方法? [打印本页]

作者: hxianm    时间: 2013-6-6 12:15
标题: 求解,为什么不能通过s.test();引用test()方法?
本帖最后由 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()方法?
作者: 夜默    时间: 2013-6-6 12:22

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");
    }
}
建议将代码好好看一遍,主函数是静态的 只能直接调用静态对象,非静态方法都可以访问

作者: 孙宁洋    时间: 2013-6-6 12:32
new  一个test对象时,test()方法已经被调用了。test()为构造方法,是对象被创建时给对象元素附初始值的。显然就不能在对象已经创建好了再去调用构造函数。
作者: 风乐    时间: 2013-6-6 13:21
本帖最后由 风乐 于 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注意区分一般方法和构造方法的区别,能不能用返回类型修饰符这个算一条


作者: 小冰块    时间: 2013-6-6 14:58
亲,构造函数和一般成员函数一个很大的不同点就是只能使用一次。
构造函数是用来创建对象时给对象初始化的,不能在一个对象被创建了以后二次使用,所以你既然之前定义一个引用的时候就已经调用的构造函数,后来想要再用一次当然就不可能了啊。
作者: 王瀛    时间: 2013-6-6 20:23
test()方法实现的是输出语句,没有返回值类型需要写 void。


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

谢谢解答
作者: hxianm    时间: 2013-6-7 11:55
孙宁洋 发表于 2013-6-6 12:32
new  一个test对象时,test()方法已经被调用了。test()为构造方法,是对象被创建时给对象元素附初始值 ...

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

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

谢谢解答
作者: hxianm    时间: 2013-6-7 11:55
王瀛 发表于 2013-6-6 20:23
test()方法实现的是输出语句,没有返回值类型需要写 void。

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

谢谢解答
作者: hxianm    时间: 2013-6-7 11:56
JinnyZh 发表于 2013-6-6 23:45
构造方法不是初始化用的么, 你创建对象的时候就用构造方法初始化了啊,
你要调用自己再写个 public static  ...

谢谢解答
作者: 张歆明    时间: 2013-6-7 12:17
hxianm 发表于 2013-6-7 11:56
谢谢解答

好 不客气 呵呵




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