JAVA --类与对象(四)构造方法


什么是构造方法?
答:和普通方法相比
方法名和类名一样(包括大小写)
没有返回类型
实例化一个对象的时候,必然调用构造方法

public class hero {
    String name;
    int hp;
    int mv;

    public hero() {
        System.out.println("实例化一个对象时候,必须使用构造方法");
    }   //没有返回对象
        //类名和方法名一致

    public static void main(String args[]) {
        hero a = new hero();
        a.hero();
    }
}

隐式的构造方法

如果没有写构造方法,就会默认提供一个无参的构造方法。

public class hero {
    String name;
    int hp;
    int mv;

    public static void main(String args[]) {
        hero h = new hero(); //如果没有写构造方法,就会默认提供一个无参的构造方法
        h.name = "提莫";
        h.hp = 200;
        h.mv = 500;
        System.out.println(h.name);
    }
}

一旦提供了一个有参的构造方法
同时又没有显式的提供一个无参的构造方法
那么默认的无参的构造方法,就“木有了“

public class hero {
    String name;
    public hero(String heroname){
        name = heroname;
    }
    public static void main(String args[]){
        hero a = new hero("卡卡罗特");
//        hero b = new hero();  这样写就报错了
        System.out.println(a.name);
    }
}

构造方法的重载

和普通的方法一样

public class hero {
    String name;
    int hp;
    public hero(String heroname){
        name = heroname;
    }
    public hero(String heroname,int herohp){
        name = heroname;
        hp = herohp;
    }
    public static void main(String args[]){
        hero a = new hero("卡卡罗特");
        hero b = new hero("小明",200);
        System.out.println(a.name);
        System.out.println(b.name);
        System.out.println(b.hp);
    }
}

综合练习:为Hero设计4个参数的构造方法
这四个参数分别是
String heroName
float heroHP
float heroArmor
int heroMoveSpeed

public class hero {
    String name;
    int hp;
    float armor;
    int movespeed;
    public hero(String heroname,int herohp,float heroarmor,int heromovespeed){
        name = heroname;
        hp = herohp;
        armor = heroarmor;
        movespeed = heromovespeed;
        System.out.println("姓名:" + name);
        System.out.println("血量:" + hp);
        System.out.println("护甲值:" + armor);
        System.out.println("移动速度" + movespeed);
    }
    public static void main(String args[]){
        hero a  = new hero("德玛西亚",500,20f,150);
    }
}

在这里插入图片描述