当前位置:编程学习 > JAVA >>

VC++中一个类有多个构造方法,比如:无参的构造方法能调用有参的构造方法去构造对象吗?java是可以的……

比如一个类Person,有两个构造方法:Person::Person(){}和Person::Person(CString name, int age);那么Person(){}可不可以给先将name赋值为name = "未知",然后调用Person(name,-1),我知道类成员定义时可以赋初值,但我不用这种方法,因为在很多情况下,要求不是这么简单,当我写了一个带参的构造方法后,可能对类对象进行了很多初始化工作,如果后续又加了几个构造方法,那么调用先前写的构造方法,就不用重复再进行初始化工作了……求速解决!
补充:JAVA里面是可以的,我经常用到……用的是this;比如有一个构造方法
Person(String name, int age){
        this.name = name;
        this.age = age;
}
再有一个构造方法是:Person(int age){
        this("姓名不知道",age);
}
所以我才想VC++里也应该有类似的用法吧?要是有,怎么用的呢?我试了用this,用":Person()",都不行……
追问:JAVA里面是可以的,我经常用到……用的是this;比如有一个构造方法
Person(String name, int age){
        this.name = name;
        this.age = age;
}
再有一个构造方法是:Person(int age){
        this("姓名不知道",age);
}
所以我才想VC++里也应该有类似的用法吧?要是有,怎么用的呢?我试了用this,用":Person()",都不行……
其他:首先我没实验过,我也懒得实验,但我认为是不行地。。看你的意思是说在一个构造方法里调用另一个构造方法是吧,也就是你构造了两个person,最后用哪个person.

再麻烦问下,java里怎么调用。刚试了下,没找到方法 构造方法与普通方法是有区别的,调用的方式完全不同.
构造方法必须是方法名与类名同名,且没有返回类型.
普通方法必须有返回类型,哪怕没有返回类型时也需要使用void关键字.

public class Student{
    private String name;
    private int age;


    //public Student()  
 //无参构造,不写这个构造方法,且这个类又没有别的构造方法(比如说下面的一个参数的构造方法),
//那么javac在编译这个类的时候也会加上.
    

    public Student(String name){//一个参数的构造方法
        this.name = name;
    }    

    public void say(){//普通方法
       System.out.println("say something...");
    }

    public void main(String[] args){
        //Java中调用一个类的普通方法,需要通过这个类的实例来进行:
        //所以这里需要用new关键字来创建一个类的实例
        Student stu = new Student();//这里相当于调用构造方法

        stu.say(); //调用普通方法,并不是放到了构造方法中去调用.而是通过类的实例来调用.

        //上面的构造方法与普通方法都是在main中调用的.

    }
} 

上一个:关于java中Font类的size字段,我在api中看到size的修饰符为protected,但是事实上是无法直接调用size字段
下一个:求助大虾:DbUtils项目中的一个sql问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,