构造器的特点------构造方法
前言一个类里面最基本的就是属性和方法属性变量访问修饰符 数据类型 属性名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)(adlevel*15.2); int nowhp houYi.getHp()-originDmghouYi.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()赢了);} } }输出结果