Java学习笔记49——封装练习
1、使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。
要求:
- 设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问
- 限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示,默认设置“心情好”。
- 设置构造函数实现对属性赋值
- 叫和跑的方法,需要根据心情好坏,描述不同的行为方式。
- 编写测试类,测试狗类的对象及相关方法(测试数据信息自定义)
运行效果图:

class Dog {
//品种,年龄,心情,名字
private String kind;
private int age;
private String mood;
private String name;
public Dog() {
}
public Dog(String kind, int age, String name) {
this.kind = kind;
this.age = age;
this.name = name;
}
//公有的get,set方法
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getMood() {
return mood;
}
public void setMood(String mood) {
if ("心情好".equals(mood) || "心情不好".equals(mood)) {
this.mood = mood;
} else {
System.out.println("输入信息错误,这只狗狗今天心情很好!");
this.mood = "心情好";
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String shout() {
if ("心情好".equals(mood)) {
return "开心的汪汪叫";
} else {
return "伤心的呜呜叫";
}
}
public String run() {
if ("心情好".equals(mood)) {
return "开心的围着主人转";
} else {
return "伤心的一动不动";
}
}
public void show() {
System.out.println("名字叫" + name + "的" + kind + mood + ", " + this.run());
System.out.println("名字叫" + name + "的" + kind + mood + ", " + this.shout());
}
}
public class Test1 {
public static void main(String[] args) {
Dog dog1 = new Dog("贵宾犬", 3, "甜心");
dog1.setMood("心情好123");
dog1.setMood("心情好");
dog1.show();
System.out.println("===================================");
Dog dog2 = new Dog("德国牧羊犬", 4, "太子");
dog2.setMood("心情不好");
dog2.show();
}
}
2、以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名,年龄,技术方向,工作年限,工作单位和职务;方法包括:工作
要求:
- 设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问
- 限定IT从业人员必须年满15岁,无效信息需提示,并设置默认年龄为15。
- 限定“技术方向”是只读属性
- 工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
- 编写测试类,测试IT从业者类的对象及相关方法(测试数据信息自定义)
运行效果图:

class ITWork {
private String name;
private int age;
private String ItDirection;
private int years;
private String workUnit;
private String job;
public ITWork(String name, int years, String ItDirection, String workUnit, String job) {
this.name = name;
this.years = years;
this.workUnit = workUnit;
this.ItDirection = ItDirection;
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 15) {
System.out.println("年龄信息无效!已修改默认年龄为15");
this.age = 15;
}
this.age = age;
}
public String getItDirection() {
return ItDirection;
}
public int getYears() {
return years;
}
public void setYears(int years) {
this.years = years;
}
public String getWorkUnit() {
return workUnit;
}
public void setWorkUnit(String workUnit) {
this.workUnit = workUnit;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public void work(String workUnit, String job) {
System.out.println("姓名:" + name + "\r\n年龄:" + age + "\r\n技术方向:" + ItDirection
+ "\r\n工作年限:" + years + "\r\n目前就职于:" + workUnit + "\r\n职务是:" + job);
}
}
public class Test2 {
public static void main(String[] args) {
ITWork worker1 = new ITWork("陶华根", 5, "大数据架构师", "阿里巴巴", "大数据开发部门");
worker1.setAge(26);
worker1.work(worker1.getWorkUnit(),worker1.getJob());
System.out.println("==========================================================");
ITWork worker2 = new ITWork("张咪", 10, "项目经理", "腾讯", "技术部门");
worker2.setAge(28);
worker2.work(worker2.getWorkUnit(),worker2.getJob());
}
}
3、某公司要开发名为”我爱购物狂”的购物网站,请使用面向对象的思想设计描述商品信息
要求:
- 分析商品类别和商品详细信息属性和方法,设计商品类别类和商品详细信息类
- 在商品详细信息类中通过属性描述该商品所属类别
- 设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问
- 编写测试类,测试商品类别类和商品详细信息类的对象及相关方法(测试数据信息自定)
- 创建包info—存放商品类别类和商品详细信息类,创建包test—存放测试类
参考分析思路:
商品类别类:
属性:类别编号,类别名称
商品详细信息类:
属性:商品编号,商品名称,所属类别,商品数量(大于0),商品价格(大于0),
方法:盘点的方法,描述商品信息。内容包括商品名称,商品数量,商品价格,现在商品总价以及所属类别信息
运行效果图:

/*
商品详细信息类:
属性:商品编号,商品名称,所属类别,商品数量(大于0),商品价格(大于0),
方法:盘点的方法,描述商品信息。
内容包括商品名称,商品数量,商品价格,现在商品总价以及所属类别信息
*/
public class GoodsInfo {
private String goodsId;
private String goodsName;
private GoodsKind goodsKind;
private int numbers;
private double price;
public GoodsInfo() {
}
public GoodsInfo(String goodsId, String goodsName, GoodsKind goodsKind) {
this.goodsId = goodsId;
this.goodsName = goodsName;
this.goodsKind = goodsKind;
}
public String getGoodsId() {
return goodsId;
}
public void setGoodsId(String goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public GoodsKind getGoodsKind() {
return goodsKind;
}
public void setGoodsKind(GoodsKind goodsKind) {
this.goodsKind = goodsKind;
}
public int getNumbers() {
return numbers;
}
public void setNumbers(int numbers) {
if (numbers > 0) {
this.numbers = numbers;
} else {
this.numbers = 0;
}
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
if (price > 0) {
this.price = price;
} else {
System.out.println("设置的价格有问题,请重新输入");
}
}
//盘点的方法
public void show() {
if (numbers == 0) {
System.out.println("库存数量异常,请联系管理员");
}
System.out.println("商品名称:" + goodsName);
System.out.println("所属类别:" + goodsKind.getKingName());
System.out.println("商品售价:" + price);
System.out.println("库存数量:" + numbers);
System.out.println("商品总价:" + (numbers*price));
}
}
/*
商品类别类:
类别编号,类别名称
*/
public class GoodsKind {
private String kindId;
private String kingName;
public GoodsKind() {
}
public GoodsKind(String kindId, String kingName) {
this.kindId = kindId;
this.kingName = kingName;
}
public String getKindId() {
return kindId;
}
public void setKindId(String kindId) {
this.kindId = kindId;
}
public String getKingName() {
return kingName;
}
public void setKingName(String kingName) {
this.kingName = kingName;
}
public void show(){
System.out.println("类别编号:"+kindId+",类别名称:"+kingName);
}
}
import com.shujia.wyh.day13.info.GoodsInfo;
import com.shujia.wyh.day13.info.GoodsKind;
public class GoodsTest {
public static void main(String[] args) {
//创建第一种类别
GoodsKind kind1 = new GoodsKind("1001", "洗发水");
//创建第一个商品
GoodsInfo goods1 = new GoodsInfo("sj001", "潘婷洗发水400ml", kind1);
goods1.setNumbers(10);
goods1.setPrice(25.0);
goods1.show();
System.out.println("=============================================");
//创建第二个商品
GoodsInfo goods2 = new GoodsInfo("sj002", "蜂花洗发水250ml", kind1);
goods2.setNumbers(0);
goods2.setPrice(11.5);
goods2.show();
}
}

浙公网安备 33010602011771号