public int Man()是构造函数吗?

解决方案 »

  1.   

    public int Man()不是构造函数,是一个普通的函数
    构造的形式只能是public class Man(){
        public Man(){}
        pubcli Man(参数){}
    }
      

  2.   

    public int Man()不是构造函数
    new Man()调用的是构造函数Man()
    而.a调用普通函数int Man()
    所以得到0的结果是正确的
      

  3.   

    构造方法返回值是允许的,不过如你所说,却是一点用也没有,但是是可以为编译器所接受.
    同时,不能通过返回值对方法进行重载,Man方法和int Man方法会造成歧义,使构造函数调用出现问题.
    我把上面的程序改了一下,你看一下结果
    public class Man {
    public Man(){System.out.println("standard constructor");}
    public int Man() { 
    System.out.println("illegal constructor");
    return 0;

    int a = Man();
    public static void main(String[] args) {
    Man man = null;
    while(true){
    man = new Man();
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }
      

  4.   

    sorry,刚才的答案有错,确实int Man方法没有被调用
      

  5.   

    稍微改写一下子
    public class Foo {
        public Foo(){}
        public int F() { 
         return 1;
        } 
        int a = F();
        public static void main(String[] args) {
         int b = new Foo().a;  
         System.out.println(b);
        }
    }
    int F() 和int Foo()是一回事,就名字不同,
    构造函数可以重载,但不论Java还是C++或别的,通过返回值来重载是不被支持的
    int i=Function();和Function();部分情况下这两句没有本质的不同
    构造函数绝对没有返回值
    我手头没有C++编译器,估计楼主这种情况在C++中要严重一点,因为Cpp支持在栈
    内创建对象Foo()就可以构造一个匿名类
      

  6.   

    public class Man {
    public Man Man() {
    int a = 10;
    return this;
    }
    int a = 0;
    public static void main(String[] args) {
    Man b = new Man();
    System.out.println(b.a);
    }
    }
    自己试一下,你就可以知道结果了。为了不让你弄混,我把构造函数给去掉了
      

  7.   

    不好意思,上面的程序有一个地方写错了
    public class Man {
    public Man Man() {
    a = 10;
    return this;
    }
    int a = 0;
    public static void main(String[] args) {
    Man b = new Man();
    System.out.println(b.a);
    }
    }
      

  8.   

    首先int Man()不是构造函数,它是先给变量付值时执行了他,再执行构造函数。