黑马程序员技术交流社区

标题: 大神们,帮我看看这道题 [打印本页]

作者: 18210530167    时间: 2016-2-27 22:48
标题: 大神们,帮我看看这道题
public class MyPrint
   {
            public void MyPrint()//1、为什么这个不是构造函数?构造函数也是函数为什么不能有返回值?
         {  
                 System.out.println("method");
         }
   
            public test()//这是普通方法,必须要加返回值;
        {
      
        }
        public static void main(String[] args) //2、main函数也是在MyPrint类中,为什么main可以调用新建MyPrint的对象?那新建的对象里是不是也包括main函数自己呢??
        {
              MyPrint mp=new MyPrint();  //构造函数自动调用
              mp.MyPrint();  //方法必须显示调用
        }

}

3、我还见过一个类,类里的函数是新建自己类的对象,这种成员调用自己类的方法让我很不解。。求大神指教!
作者: pangzi_zhou    时间: 2016-2-27 23:12
本帖最后由 pangzi_zhou 于 2016-2-27 23:23 编辑

我也不是很清楚,不过,大家可以探讨一下1、构造函数的形式,我觉得跟编译器有点关系,编译器会识别什么函数是构造函数还是普通函数
2、main函数是静态函数,在类加载的时候就会加载,存储在静态方法区,是共享的,所以不存在多个主函数
3、方法里面新建本类对象的引用,我觉得跟一个房子存了一个门牌号一样,然后这个门牌号指向一个一模一样的房子

作者: huang_bing_hua    时间: 2016-2-28 07:35
回答第一个问题:构造方法的格式是private/public 类名(),是没有返回值的,这就是定义
作者: 蓝色小宇宙    时间: 2016-2-28 13:22
  public void MyPrint()//1、为什么这个不是构造函数?构造函数也是函数为什么不能有返回值
因为构造函数的定义格式就是没有返回值类型的(个人看法)

public test()//这是普通方法,必须要加返回值;
这个是必须要加返回值类型,不是返回值,有点强迫症 ╭(╯^╰)╮

MyPrint mp=new MyPrint();  //构造函数自动调用
这个不是构造函数调用,MyPrint只是个普通的没有返回值非静态方法...在主函数中如果要调用本类中非静态的方法时,需先创建对象,再由对象去调用非静态方法,如果是调用静态方法,就可以直接单独调用,输出或者赋值调用
作者: 晓寒轻    时间: 2016-2-28 15:56
有些定义的东西用不着去拿常规方法解释。就像为什么一个字节是8位,定义的就接受就行了,至于其他问题没仔细看。。哈哈  加油吧




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