新闻资讯

    这个问题已经有人讨论过,最近在Java版再次被人提出来了。

    疑问在于如下的代码:

    =("");

    new 的时候调用构造函数返回给str;

    从语法上讲,构造函数不允许有返回值,就算是 void 也不行。

    这里的new 是调用构造函数,在堆里分配了一个对象构造方法没有返回类型,并让str指向这个对象。实际上是那个 new 在起作用,而不是()在起作用。

    下面是因为原版说明,有兴趣的自己看吧

    For other than , can . are of that can be used an the to the is bynew. have the same name as the class they . , they take zero or more , but are and thus have no type. , if any, are the that the type name when the with new. after the of a newly ofthe class have been their and are .

    We the sun to using new. The new is byfar the most way to (we cover the other ways 16). When you an with new, you the you want to and any for its .The space to store the of and it in ways you will soon see. When is , the a to the new .

    下面是构造方法的一些特点总结

    (1)构造方法的方法名必须与类名相同。

    (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。

    (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

    (4)构造方法不能由编程人员调用,而要系统调用。

    (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器构造方法没有返回类型,这个构造器不执行任何代码。

    (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

    当然

    (){}

    这个算一个普通的方法,虽然和类重名,但却是合法的普通方法,而不是构造方法了。

    如下的类可以正常编译并运行,结果正确。请注意构造方法里面的;

    {(){ ; // 请注意这里的哦,这是合法的语句

    }(){"特殊的方法,和类名相同";}([]args){.out.(newT().T());}}

    从另一个角度看,正是因为构造函数没有返回值才需要这么写:

    =("");

    否则,如果有返回值,应该如下写:

    =("");

    当然了,那个是一个普通的方法,不再是构造方法了。原因看前面的例子。

    结论:

    构造函数/方法/构造器, 没有返回值。以后就别讨论这个了,呵呵。

    讨论地址:

网站首页   |    关于我们   |    公司新闻   |    产品方案   |    用户案例   |    售后服务   |    合作伙伴   |    人才招聘   |   

地址:北京市海淀区    电话:010-     邮箱:@126.com

备案号:冀ICP备2024067069号-3 北京科技有限公司版权所有