封装与继承
目录
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+"\t\t最好成绩:"+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