首页 > 分享 > 面向对象练习(3)

面向对象练习(3)

封装与继承

目录

1.使用封装实现企鹅类

2.选民投票

3.使用继承实现电子宠物系统

4.游戏开发-面向对象

5.信息输出-面向对象

6.电子宠物系统

7.程序分析

1.使用封装实现企鹅类

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;}} }

2.选民投票

----------------------------静态方法的使用--------------------------------

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();} }

3.使用继承实现电子宠物系统

        该题同之前、后续等题。

4.游戏开发-面向对象

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("飞行");} }

5.信息输出-面向对象

请用面向对象的思想,设计自定义类描述演员和运动员的信息
设定
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();} }

6.电子宠物系统

狗类:

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;}} }

7.程序分析

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节气冬至,富含诗书
下一篇: 宠物行业深度:千亿宠物市场爆发在