封装与继承
目录
1.使用封装实现企鹅类
2.选民投票
3.使用继承实现电子宠物系统
4.游戏开发-面向对象
5.信息输出-面向对象
6.电子宠物系统
7.程序分析
package dh03; /** * * @author XXX 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60 * 2023年6月9日下午4:55:22 */ //企鹅类 public class Penguin {private String name;// 名字private int health;// 健康值private String sex;// 性别private int love;// 亲密度// 快捷键alt+shift+s// 输出企鹅信息public void print() {System.out.println("宠物的自白:n我的名字叫" + this.name + ",健康值是" + this.health + ",和主人的亲密度是" + this.love + ",性别是:"+ this.sex + "。");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {if (health < 60 || health > 100) {System.out.println("宠物的健康值只能在0-100之间,默认值60!");this.health = 60;return;}this.health = health;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getLove() {return love;}public void setLove(int love) {if (love < 60 || love > 100) {System.out.println("宠物的亲密度只能在60-100之间,默认值60!");this.love = 60;return;}this.love = love;} }
package dh03; /** * * @author XXX 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60 * 2023年6月9日下午4:55:22 */ //狗类 public class Dog {private String name;// 名字private int health;// 健康值private String sex;// 性别private int love;// 亲密度// 快捷键(alt+shift+s)// 输出狗信息public void print() {System.out.println("宠物的自白:n我的名字叫" + this.name + ",健康值是" + this.health + ",和主人的亲密度是" + this.love + "性别是:"+ this.sex + "。");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHealth() {return health;}public void setHealth(int health) {if (health < 60 || health > 100) {System.out.println("宠物的健康值只能在0-100之间,默认值60!");this.health = 60;return;}this.health = health;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getLove() {return love;}public void setLove(int love) {if (love < 60 || love > 100) {System.out.println("宠物的亲密度只能在60-100之间,默认值60!");this.love = 60;return;}this.love = love;} }
测试类:
package dh03; //测试类 import java.awt.im.InputContext; import java.util.Scanner; public class TestPenguin {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("欢迎来到宠物店!");System.out.print("请输入要领养宠物的名字:");String name =sc.next();System.out.print("请输入要领养宠物的类型:(1、狗狗 2、企鹅)");int typeNo =sc.nextInt();switch (typeNo) {case 1://创建狗狗对象System.out.print("请选择狗狗的性别:(1、公 2、母)");int sexId1 =sc.nextInt();String sex1 = (sexId1==1)?"公":"母";System.out.print("请输入狗狗的健康值(1~100之间):");int health1 = sc.nextInt();System.out.print("请输入狗狗的亲密度:");int love1 =sc.nextInt();//Dog dog = new Dog();dog.setName(name);dog.setHealth(health1);dog.setSex(sex1);dog.setLove(love1);dog.print();break;case 2://创建企鹅对象System.out.print("请选择企鹅的性别:(1、Q仔 2、Q妹)");int sexId =sc.nextInt();String sex = (sexId==1)?"Q仔":"Q妹";System.out.print("请输入企鹅的健康值(1~100之间):");int health = sc.nextInt();System.out.print("请输入企鹅的亲密度:");int love =sc.nextInt();//创建企鹅对象Penguin p =new Penguin();p.setName(name);p.setHealth(health);p.setSex(sex);p.setLove(love);p.print();break;default:System.out.println("暂时没有这个类型的宠物");break;}} }
----------------------------静态方法的使用--------------------------------
package dh03; /** * @author XXX 模拟实现选民投票过程: 一群选民进行投票, 每个选民只允许投一次票, 并且当投票总数达到100时,就停止投票 * 2023年6月10日下午2:16:16 */ //选民类 public class Voter {// 目前投票数,被所有的的选民实例共享static int count;// 投票总数最大值,100时,就停止投票static final int MAX_COUNT = 100;// 选民名字private String name;public Voter() {}public Voter(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}// 投票方法public void vote() {if(count == MAX_COUNT) {System.out.println("投票总数达到100时,停止投票");return;}else {count++;System.out.println(this.name+"投票成功,当前票数为:"+count);}} }
测试类:
package dh03; public class TestVoter {public static void main(String[] args) {Voter v1 = new Voter("张三");v1.vote();Voter v2 = new Voter("李四");v2.vote();Voter v3 = new Voter("王五");v3.vote();for (int i = 1; i <=97; i++) {Voter v = new Voter("v"+i);v.vote();}Voter v4 = new Voter("马六");v4.vote();} }
该题同之前、后续等题。
1.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定
1)蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
2)蜈蚣精类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(飞行移动)
要求
1)分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
2)利用继承机制,实现蛇怪类和蜈蚣精类
3)攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
4)编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
蛇怪类:
package dh03.monster; //蛇精类 public class Snake extends Monster {public Snake(String name) {super(name);}public void addHP(Centipede centipede) {super.getHP();super.setHP(super.getHP() - centipede.getATK());System.out.print("目前血量:"+super.getHP()+"t蜈蚣开始攻击");System.out.println(super.getHP());if(super.getHP()<=10) {super.setHP(super.getHP() - centipede.getATK());}} }
蜈蚣精类:
package dh03.monster; //蜈蚣类 public class Centipede extends Monster {public Centipede(String name) {super(name);}public void addHP(Snake snake) {super.getHP();super.setHP(super.getHP() -snake.getATK());System.out.print("目前血量:"+super.getHP()+"t蛇开始攻击");System.out.println(super.getHP());if(super.getHP()<=10) {super.setHP(super.getHP() -snake.getATK());}} }
父类--怪兽类:
package dh03.monster; /** * * @author XXX 1.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精 设定 1)蛇怪类: 属性包括:怪物名字,生命值,攻击力 * 方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值) 2)蜈蚣精类: 属性包括:怪物名字,生命值,攻击力 * 方法包括:攻击,移动(飞行移动) 2023年6月12日下午3:55:48 */ public class Monster {private String name;// 姓名private int HP;// 生命值private int ATK;// 攻击力 //----------------------------------public Monster(String name) {this.name = name;}public String getName() {return name;}public int getHP() {return HP;}public void setHP(int hP) {HP = hP;//补血操作if(HP<10) {HP = HP + 20;System.out.println("血量过低,自动补血20,目前血量:"+HP);}}public int getATK() {return ATK;}public void setATK(int aTK) {ATK = aTK;} //----------------------------------// 攻击方法:public void gongji() {System.out.println(this.name + "发动了攻击操作" + "t生命值:" + this.HP + "t攻击力:" + this.ATK);}// 移动方法public void move(String x) {if(x.equals("飞行")) {System.out.println("移动(飞行移动))");}else if(x.equals("曲线")) {System.out.println("移动(曲线移动))");}else {System.out.println("没有这个移动的方式,仅支持飞行或曲线移动");}} }
测试类:
package dh03.monster; //测试类 public class TestMonster {public static void main(String[] args) {// 蛇精类Snake snake = new Snake("YJZ");snake.setHP(50);snake.setATK(9);snake.move("曲线");snake.gongji();// 蜈蚣精类Centipede centipede = new Centipede("ZJY");centipede.setHP(55);centipede.setATK(7);for (int i = 0; i < 10; i++) {snake.addHP(centipede);centipede.addHP(snake);}centipede.move("飞行");} }
请用面向对象的思想,设计自定义类描述演员和运动员的信息
设定
1)演员类:
属性包括:姓名,年龄,性别,毕业院校,代表作
方法包括:自我介绍
2)运动员类:
属性包括:姓名,年龄,性别,运动项目,历史最好成绩
方法包括:自我介始
要求
3)分析演员和运动员的公共成员,提取出父类—人类
4)利用继承机制,实现演员类和运动员类
5)编写测试类,分别测试人类,演员类和运动员类对象及相关方法
6)定义名为act的包存人类,演员类,运动员类和测试类
演员类:
package dh03.act; /** * 演员类 * @author XXX * * 2023年6月13日上午9:38:18 */ public class Performer extends Human{private String graduation = "家里蹲大学";//毕业院校private String masterpiece = "X你太美";//代表作public Performer(String name) {super(name);}//自我介绍方法public void show() {super.show();System.out.println("毕业院校:"+this.graduation+"t代表作:"+this.masterpiece);} }
运动员类:
package dh03.act; /** * 运动员类 * @author XXX * * 2023年6月13日上午9:38:06 */ public class Athlete extends Human{private String project = "rap";//项目private String best = "第一";//最好成绩public Athlete(String name) {super(name);}public void show() {super.show();System.out.println("项目:"+this.project+"tt最好成绩:"+this.best);} }
父类--人类:
package dh03.act; /** * 父类-人类 * @author XXX * * 2023年6月13日上午9:38:38 */ public class Human {private String name;private int age;private String sex;//自我介绍方法public void show() {System.out.println("姓名:"+this.name+"t年龄:"+this.age+"t性别:"+this.sex);}public Human(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;} }
测试类:
package dh03.act; /** * 测试类 * @author XXX * * 2023年6月13日上午11:15:54 */ public class Test {public static void main(String[] args) {//演员Performer performer = new Performer("爱kun");performer.setAge(18);performer.setSex("男");performer.show();//运动员Athlete athlete = new Athlete("kun哎");athlete.setAge(22);athlete.setSex("女");athlete.show();} }
狗类:
package dh03.pet; /** * * @author XXX 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60 * 2023年6月9日下午4:55:22 */ //狗类 public class Dog extends Pet {private String type;//狗的品种public Dog(String name) {super(name);}public String getType() {return type;}public void setType(String type) {this.type = type;}public void print() {super.print();System.out.println("我的品种是:"+this.type);} }
企鹅类:
package dh03.pet; /** * * @author XXX 保证健康值的有效性(0-100),否则取默认值60 保证亲密度的有效性(0-100),否则取默认值60 * 2023年6月9日下午4:55:22 */ //企鹅类 public class Penguin extends Pet{public Penguin(String name) {super(name);} }
父类---宠物类:
package dh03.pet; /** * * @author XXX * 使用继承优化电子宠物系统 * 2023年6月12日下午2:42:41 */ public class Pet {private String name;// 名字private int health;// 健康值private String sex;// 性别private int love;// 亲密度public Pet(String name) {this.name = name;}public String getName() {return name;}public int getHealth() {return health;}public void setHealth(int health) {if (health < 60 || health > 100) {System.out.println("宠物的健康值只能在0-100之间,默认值60!");this.health = 60;return;}this.health = health;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getLove() {return love;}public void setLove(int love) {if (love < 60 || love > 100) {System.out.println("宠物的亲密度只能在60-100之间,默认值60!");this.love = 60;return;}this.love = love;}//宠物独白public void print() {System.out.println("宠物的自白:n我的名字叫" + this.name + ",健康值是" + this.health + ",和主人的亲密度是" + this.love + ",性别是:"+ this.sex + "。");} }
测试类:
package dh03.pet; import java.util.Scanner; /** * 测试类 * @author XXX * * 2023年6月13日上午9:34:48 */ public class TestPet {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("欢迎来到宠物店!");System.out.print("请输入要领养宠物的类型:(1、狗狗 2、企鹅)");int typeNo =sc.nextInt();switch (typeNo) {case 1:Dog dog = new Dog("张三");dog.setHealth(-100);dog.setSex("公");dog.setLove(-100);dog.setType("哈士奇");dog.print();break;case 2://创建企鹅对象Penguin p =new Penguin("李四");p.setHealth(60);p.setSex("母");p.setLove(100);p.print();break;default:System.out.println("暂时没有这个类型的宠物");break;}} }
public class A{
public A(){
System.out.println("a");
}
}
public class B extends A{
public B(){
System.out.println("b");
}
}
B b = new B();
输出结果为:ab
相关知识
Java面向对象
Python基本思想——面向对象编程
面向对象
初识面向对象(猫咪项目)
面向对象案例——宠物医院
PHP面向对象(第一部分)
pyhton面向对象的实例
js面向对象第二天
七:面向对象
使用面向对象思想设计电子宠物系统
网址: 面向对象练习(3) https://m.mcbbbk.com/newsview531029.html
上一篇: 洛克王国:24节气冬至,富含诗书 |
下一篇: 宠物行业深度:千亿宠物市场爆发在 |