如何理解构造方法?在类中得作用是什么??第一次发问,请大哥支持下

解决方案 »

  1.   

          初始化,比方说一间房子有扇门,你总要告诉jvm,这扇门是什么颜色,什么款式,多大的,对吧。
      

  2.   


    答:兄弟是第一次发问,大哥我就第一次回答支持.要考虑构造方法的作用,表思考下条语句:MyCLass mo=new MyClass();这个:new MyClass()   它内部究竟是如何执行的?
    1)第一步:执行new 运算符.其作用是:从堆中"挖出"一块内存空间(空间大小与性质由类MyClass决定)
    2)第二步:对"挖出"的这块内存空间,将其"地址"传入MyClass()这个构造方法,最主要的作用是:对这块空间进行初始化.(变量没有初始化,是不能直接拿来用的.同样:一个对象的空间没有正确初始化,该对象是不允许拿去使用的)  当然初始化后,也可以继续执行其它你写的语句.
    3)第三步:构造方法中代码执行完毕之后,才将该对象的引用赋值给变量mo.
      

  3.   

    答:正是由于构造方法如此重要(每一个对象都要初始化),因此:JAVA中规定:每一个类都必须要有一个构造方法.若你偏偏不想定义构造方法,则编译程序将自动替你生成一个.这个自动替你生成的,就是"默认构造方法"了.
      

  4.   

    在你new一个对象的时候,让他们括号里面的参数匹配
    public class person{
      private String name;
      private int age;  public person(){}                     --不带参数的构造函数,如果你不写,程序将自动创建
      public person(String name,int age){   --带参数的构造函数
        this.name = name;
        this.age = age;
      }  public void Print(){                       
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+age);
      }public static void main(String[] args){
        person zhangsan = new person();           --请看,括号里为空,它就调用不带参数的构造函数
        zhangsan.name = "张三";
        zhangsan.age = 18;
        zhangsan.Print();
        
        person lisi = new person("李四",20);       --括号里的“李四”对应带参构造函数的String name,年龄同理
        lisi.Print();
     }
    }这下明白了吧?这些代码都是我自己一点一点敲出来的噢!这分你不给我就不够意思哈!呵呵~~
      

  5.   


    不带参数的构造器自动被赋予默认值,例子中的name被赋予null,age被赋予0:public class person{ 
      private String name; 
      private int age;   public person(){}                    
      public person(String name,int age){
        this.name = name; 
        this.age = age; 
      }   public void Print(){                      
        System.out.println("姓名:"+name); 
        System.out.println("年龄:"+age); 
      } public static void main(String[] args){ 
        person zhangsan = new person();
        zhangsan.Print(); 打印结果为:
    姓名:null
    年龄:0
      

  6.   

    构造器与类名同名,无返回值,默认为静态,可以签名重载,作用是可以用来初始化成员变量,配合new关键字可以创建类的一个对象,并加载类
      

  7.   

    很形象,楼主看看这篇文章
    http://www.yesky.com/149/1636649.shtml
      

  8.   

    构造函数是类的一个特殊方法,这个方法用来生成实例时由系统自动调用,程序员无法直接调用。构造函数方法名同类名相同且参数为空。子类继承父类后默认继承父类的构造函数,即:子类存在隐含方法:super(),如果子类重写构造函数则子类也隐含调用super()。 
    如下例: 例一: 
    package sample; 
    public class A{ 
    A(){ 
    System.out.println("主类构造函数调用"); 

    public static void main(String args[]){ 
    A g=new A(); 
    subA s=new subA(); 
    } } 
    class subA extends A{ } 
    执行结果为: 
    主类构造函数调用 
    主类构造函数调用 
    本例中子类subA中没有任何方法,所以隐含调用super(),super()指向A()。 
    例二: 
    package sample; 
    public class A{ 
    A(){ 
    System.out.println("主类构造函数调用"); 

    public static void main(String args[]){ 
    A g=new A(); 
    subA s=new subA(); 
    } } 
    class subA extends A{ 
    public subA(){ 


    执行结果为: 
    主类构造函数调用 
    主类构造函数调用 
    本例中子类subA只有一个空方法suba()中没有任何方法,所以也隐含调用super(),super()指向A()。 
    例三: 
    package sample; 
    public class A{ 
    A(){ 
    System.out.println("主类构造函数调用"); 

    public static void main(String args[]){ 
    A g=new A(); 
    subA s=new subA(); 
    } } 
    class subA extends A{ 
    public subA(){ 
    System.out.println("子类构造函数调用"); 


    执行结果为: 
    主类构造函数调用 
    主类构造函数调用 
    子类构造函数调用 
    本例中子类subA的方法subA()虽然后输出但同上例中相同都为构造函数,所以也隐含调用super(),super()指向A()。