日期:2014-05-20  浏览次数:20619 次

我刚开始学习JAVA
请教大家一个问题,刚接触JAVA,边学边练一下,
package test.aa;
import java.util.Date;
class Test
{
 public Test()

 {
  Date d = new Date();
System.out.println(d);
 }
 
 public static void main(String[] args)
 {
Test t = new Test();
   System.out.println("Hello lcrystal !");
 }
}

上面程序和下面程序执行的结果是一样的,区别在哪里呢?
为什么非要上面很复杂的过程呢?
package test.aa;
import java.util.Date;
class Test
{
 
 public static void main(String[] args)
 {
        Date d = new Date();
System.out.println(d);
   System.out.println("Hello lcrystal !");
 }
}
上面2个程序有什么区别?

------解决方案--------------------
呵呵  哥们  继续看视频吧,没有的话就给我要,,,
------解决方案--------------------
引用:
楼上哥哥挖苦我呢,我什么都不会,菜鸟



上面那个是创建了一个Test的构造函数,
所谓构造函数通俗易懂就是:你想让这个类,一初始化(一被new出来)就有的东西。

  举个简单的例子吧:比如你去KFC,你需要点套餐,那么,这时你需要找到服务员这个对象,
服务员内部就封装好了A,B,C套餐,换句话说,她一初始化就具备点套餐这个功能,而你只需要去找到这个对象就可以完成点套餐了,现在明白点了吧LZ,你可以理解为,我第一种是叫套餐A或B或C,而第二种就好比是,你单点:汉堡,可乐等,最终的结果是一样的,但是当然是直接点套餐省事了,而多个构造函数是以重载的形式存在的,就是说,ABC都叫套餐,但是里面食物(功能) 却不一样。
   所谓重载就是方法名相同  套餐()
  但是参数列表不同,比如参数的顺序,类型,个数等 (就是括号里的东西) >>这里就好比是套餐里的食物不一样但是又都叫套餐

  方法重载跟返回值类型和修饰符无关
  
 那么在执行时,你传给方法哪些参数,java虚拟机就会去找对应的方法执行(所以不用担心混乱)
------解决方案--------------------
引用:
楼上哥哥挖苦我呢,我什么都不会,菜鸟


给LZ总结了一下比较书面的说法

对象一建立就会调用与之对应的构造函数。

构造函数的作用:可以用于给对象进行初始化。

构造函数的小细节:
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。

当在类中自定义了构造函数后,默认的构造函数就没有了。


构造函数和一般函数在写法上有不同。

在运行上也有不同。
构造函数是在对象一建立就运行。给对象初始化。
而一般方法是对象调用才执行,是给对象添加对象具备的功能。

一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次。

什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
------解决方案--------------------
呵呵,区别就是你把      
Date d = new Date();
System.out.println(d);

放在类的无参数构造函数里面实现了。 这样的效果是你在实例化这个Test类的时候就会执行这段代码,你客户端调用不是变简单了么?  一般来说,如果这是一个业务实现,当然最好是把这些写在类的方法中实现,然后客户端调用通过实例化类,再通过实例的方法调用。 这样才是面向对象。 全在main方法实现,那就是面向过程了。当然,面向对象没这么简单,这是最基本的。