构造器的特点------构造方法
2026/7/23 13:28:34 网站建设 项目流程

前言:一个类里面最基本的就是属性和方法

属性(变量):

访问修饰符 数据类型 属性名

private与public的区别

public是公有的

private是私有的

private只能在本类使用

public 不管在哪一个类都可以调用

如果想要在别的类使用就需要用到get、set方法或者是构造方法

方法(函数)

格式:public 返回值类型 方法名(参数类型 参数名,,){方法体……}

定义set方法 用来设置属性(在创建对象后需要修改属性)

格式:set +属性名(首字母大写)

this表示当前类的对象,用来给属性传参数

定义get方法 :用来获取属性

格式:get +属性名(首字母大写)

也可以右键,鼠标点击Generate一键就会写好get、set方法

构造方法: 格式:public 类名(参数类型 参数明,,){ 方法体...}

区别:构造方法没有返回值类型 构造方法名必须是类名

作用:创建对象 给多个属性赋值

每个类都有一个默认的无参构造方法,当自己定义构造方法是那么默认无参构造方法就会被替代

什么时候用get、set方法,什么时候用构造方法

我个人认为给参数传默认值的时候用构造方法

参数需要变换值的时候用get、set方法

方法重载:同一个方法通过参数选择实现不同的功能

怎么判断是方法重载

1、方法名重名

2、同时给多个属性赋值

写了这个就可以不用创建对象

作业:用构造方法写PK游戏

通过文字来实现回合制游戏

谁先把对方打到血量归零的时候就赢

例如:后裔PK孙尚香

分为后裔类、孙尚香类、Game类

后裔类

package wxy260721.com.wxy; public class HouYi { //属性:生命值、姓名、攻击力、等级、防御力 private int hp; private String name; private int ad; private int level; private int def; //构造方法: 格式:public 类名(参数类型 参数明,,){ 方法体...} //区别:构造方法没有返回值类型 构造方法名必须是类名 //作用:创建对象 给多个属性赋值 // 每个类都有一个默认的无参构造方法,当自己定义构造方法那么默认的无参构造方法就会被替代 //this关键字用来区分是属性还是参数 把参数传给属性 public HouYi(int hp, String name, int ad, int level, int def) { this.ad = ad; this.hp = hp; this.def = def; this.level = level; this.name = name; } //get方法:获取属性 public int getHp() { return hp; } //set方法:设置属性(在创建对象后需要修改属性) public void setHp(int hp) { this.hp = hp; } public int getDef() { return def; } public void setDef(int def) { this.def = def; } public String getName() { return name; } public void setName(String name) { this.name = name; } //方法 public void multipleArrow(SunShangXiang sunShangXiang) { //计算伤害 System.out.println("后裔使用技能:多重箭矢"); //强制转成整数的伤害 int originDmg = (int) (ad + level * 15.2); int nowhp = sunShangXiang.getHp() - originDmg + sunShangXiang.getDef(); //修改成新的血量 sunShangXiang.setHp(nowhp); System.out.println("-------------" + sunShangXiang.getName() + "受到了" + originDmg + "点伤害,还剩下" + nowhp + "血量" + "--------------"); } }

孙尚香类

package wxy260721.com.wxy; public class SunShangXiang { //属性:生命值、姓名、攻击力、等级、防御力 private int hp; private String name; private int ad; private int level; private int def; public SunShangXiang(int hp,String name,int ad,int level,int def ){ this.hp = hp; this.name = name; this.ad = ad; this.level = level; } public void setHp(int hp) { this.hp = hp; } public int getHp() { return hp; } public int getDef() { return def; } public void setDef(int def) { this.def = def; } public String getName() { return name; } public void setName(String name) { this.name = name; } //方法 public void rollingAssault(HouYi houYi){ System.out.println("孙尚香使用技能:翻滚突击"); //计算伤害 int originDmg = (int)(ad+level*15.2); int nowhp =houYi.getHp()-originDmg+houYi.getDef(); houYi.setHp(nowhp); System.out.println("-------------"+houYi.getName()+"受到了"+originDmg+"点伤害,还剩下"+nowhp+"血量"+"--------------"); } }

Game类

package wxy260721.com.wxy; public class PlayGame { public static void main(String[] args) { System.out.println("---------Game start!---------"); SunShangXiang sunShangXiang = new SunShangXiang(3329,"孙尚香",168,1,89); HouYi houYi = new HouYi(3362,"后裔",165,1,89); //通过while循环实行回合制游戏,直到一个人血量低于零循环结束 while(houYi.getHp()>0 && sunShangXiang.getHp()>0) { sunShangXiang.rollingAssault(houYi); houYi.multipleArrow(sunShangXiang); } //判断语句 判断谁赢 if (houYi.getHp()<0){ System.out.println(sunShangXiang.getName()+"赢了"); } else { System.out.println(houYi.getName()+"赢了");} } }

输出结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询