一、引入
1、系统提供无参构造方法
// 构造方法 构造器
// 类创建对象,又称实例化
// 实例化需要构造方法
// 无返回值,方法名与类名相同
// 未显示定义构造方法,系统自动提供一个无参的构造方法
// 类名 每个单词首字母大写
// 变量名、方法名 第一个单词首字母小写,第二个单词开始首字母大写
public class Hero {
String name; // 英雄名称
float hp; // 血量
float armor; // 护甲
int moveSpeed; // 移动速度
public static void main(String[] args) {
Hero h1 = new Hero(); // new Hero()创建对象时调用了系统提供的无参的构造方法
}
}
2、自定义构造方法
// 定义了构造方法,实例化时调用自定义构造方法
// 类名每个单词首字母大写
// 变量名、方法名第一个单词首字母小写,第二个单词开始首字母大写
public class Hero {
String name; // 英雄名称
float hp; // 血量
float armor; // 护甲
int moveSpeed; // 移动速度
public Hero() {
System.out.println("调用一个自定义的无参的构造方法!");
}
public static void main(String[] args) {
Hero h1 = new Hero(); // new Hero()创建对象时调用了自定义的无参的构造方法
}
}
运行结果:
3、构造方法重载
// 自定义构造方法后,系统不再提供无参的构造方法
// 类名每个单词首字母大写
// 变量名、方法名第一个单词首字母小写,第二个单词开始首字母大写
public class Hero {
String name; // 英雄名称
float hp; // 血量
float armor; // 护甲
int moveSpeed; // 移动速度
public Hero(String hName) {
name = hName;
System.out.println("调用一个自定义的有参的构造方法!");
}
public static void main(String[] args) {
Hero h1 = new Hero("提莫"); // 调用了有参的构造方法
System.out.println(h1.name);
// Hero h1 = new Hero(); // 系统不提供无参构造方法,报错
}
}
运行结果:
// 自定义构造方法后,系统不再提供默认的无参的构造方法,因此通常情况下,需自定义无参的构造方法。
// 构造方法重载
// 和普通方法一样构造方法也可以重载
public class Hero {
String name; // 英雄名称
float hp; // 血量
float armor; // 护甲
int moveSpeed; // 移动速度
public Hero() {
System.out.println("调用一个自定义的无参的构造方法!");
}
public Hero(String hName) {
name = hName;
System.out.println("调用一个自定义的有参的构造方法1!");
}
public Hero(String hName, float hHp) {
name = hName;
hp = hHp;
System.out.println("调用一个自定义的有参的构造方法2!");
}
public static void main(String[] args) {
Hero h1 = new Hero(); // 调用 无参的 构造方法
Hero h2 = new Hero("提莫"); // 调用了 有参的 构造方法
System.out.println(h2.name);
Hero h3 = new Hero("盖伦", 100.0f); // 调用了 有参的 构造方法
System.out.println(h3.name + " " + h3.hp);
}
}
运行结果:
二、练习
// 构造方法重载,4个参数,姓名,血量,护甲,移动速度
public class Hero {
String name; // 英雄名称
float hp; // 血量
float armor; // 护甲
int moveSpeed; // 移动速度
public Hero() {
System.out.println("调用一个自定义的无参的构造方法!");
}
public Hero(String hName) {
name = hName;
System.out.println("调用一个自定义的有参的构造方法1!");
}
public Hero(String hName, float hHp) {
name = hName;
hp = hHp;
System.out.println("调用一个自定义的有参的构造方法2!");
}
public Hero(String hName, float hHp, float hArmor, int hMS) {
name = hName;
hp = hHp;
armor = hArmor;
moveSpeed = hMS;
System.out.println("调用一个自定义的有参的构造方法3!");
}
public static void main(String[] args) {
Hero h1 = new Hero(); // 调用 无参的 构造方法
Hero h2 = new Hero("提莫"); // 调用了 有参的 构造方法
System.out.println(h2.name);
Hero h3 = new Hero("盖伦", 100.0f); // 调用了 有参的 构造方法
System.out.println(h3.name + " " + h3.hp);
Hero h4 = new Hero("曹操", 90.0f, 10, 350); // 调用了 有参的 构造方法
System.out.println(h4.name + " " + h4.hp + " " + h4.armor + " "
+ h4.moveSpeed);
}
}
运行结果:
我的学习源泉:https://how2j.cn/k/class-object/class-object-constructor/292.html?p=114999
Java自学网站:https://how2j.cn?p=114999