关于构造函数

一、构造函数的一项关键特征是它会在对象能够被赋值给引用之前就执行。
而构造函数和方法的不同在于构造函数没有返回类型,且方法名一定与类名相同。

package tydu;
class Duck{
public Duck(){
    System.out.print("ga ga ga");
}
}

public class gouzao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
Duck d=new Duck();

    }

}

输出:
ga ga ga

二、使用构造函数来初始化Duck的状态。
最好的方法是把初始化的程序代码放在构造函数中,然后把构造函数设定成需要参数的。

代码如下:

package tydu;
class Duck{
    int size;
public Duck(int setsize){
    System.out.println("ga ga ga");
    size=setsize;
    System.out.print("size is "+ size);

}
}

public class gouzao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Duck d=new Duck(3);

    }

}

重载构造函数就是代表你又一个以上的构造函数并且参数都不相同。

如果两个构造参数类型都是一样的则无法通过编译,如:

class Duck{
    int size;
public Duck(int setsize){
    System.out.println("ga ga ga");
    size=setsize;
    System.out.print("size is "+ size);

}
public Duck(int n) {


}
}

编译器看得是参数的类型和顺序,而不是参数的名字,如:

package tydu;
class Duck{
    int size;
public Duck(int setsize){
    System.out.println("ga ga ga");
    size=setsize;
    System.out.print("size is "+ size);

}
public Duck(boolean setsize) {


}
}

public class gouzao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Duck d=new Duck(3);

    }

}

我们也可以做出相同类型但是顺序不同的参数。如:

package tydu;
class Duck{
    int size;
public Duck(int setsize ,boolean n){
    System.out.println("ga ga ga");
    size=setsize;
    System.out.print("size is "+ size);

}
public Duck(boolean n,int setsize) {


}
}

public class gouzao {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Duck d=new Duck(3,true);

    }

}
package dds;


 abstract class vnimal{
    private String name;
    //fog会继承这个getter
    public String getName() {
        return name;
    }
    public vnimal(String setname) {

        name=setname;
    }

}
 class fog extends vnimal{
    //这个构造函数会要求名称
    public fog(String name) {
        //传递Animal的构造函数,通过super()来引用父类
        super(name);
    }
}
public class aannimal {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        fog d=new fog("momo");
        System.out.print(d.getName());
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值