一、继承的复习
// 父类 Computer
package computer;
public class Computer {
private String name;//插入设备名称
public Computer(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 有参构造方法的作用就是初始化成员变量
public void usb(){
}
}
// 子类 U盘类
package computer;
public class UDisk extends Computer{
public UDisk(String name) {
super(name);
}
@Override
public void usb() {
System.out.println(super.getName()+"可以操作电脑了");
}
}
// 子类 键盘类
package computer;
public class UsbKeyboard extends Computer{
public UsbKeyboard(String name) {
super(name);
}
@Override
public void usb() {
// TODO Auto-generated method stub
super.usb();
System.out.println(super.getName()+"可以操作电脑了");
}
}
// 子类 鼠标类
package computer;
public class UsbMouse extends Computer{
private String type;//usb的类型
public UsbMouse(String name, String type) {
super(name);
this.type = type;
}
@Override
public void usb() {
System.out.println(super.getName()+this.type+"可以操作电脑了");
}
}
// 测试类
package computer;
public class TestComputer {
public static void main(String[] args) {
// TODO Auto-generated method stub
UDisk u=new UDisk("U盘");
UsbMouse m=new UsbMouse("鼠标","USB2.0");
UsbKeyboard k=new UsbKeyboard("键盘");
u.usb();
m.usb();
k.usb();
}
}
输出结果:
二、木兰替父从军
// 父类 father
package father;
public class Father {
public void fight(){
System.out.println("我是父亲花胡,我要去打仗");
}
}
// 子类 Daughter
package father;
public class Daughter extends Father{
@Override
public void fight() {
System.out.println("我是花木兰,我要替父从军");
}
public void dressup(){
System.out.println("我是花木兰,我要梳妆打扮");
}
}
// 测试类
package father;
public class Test {
public static void main(String[] args) {
//女扮男装,女儿身份变成父亲身份
//向上转型
//1.首先,创建子类对象
//2.子类对象赋值给父类引用
//3.父类调用父类的方法
Daughter mulan=new Daughter();
Father huahu=mulan;
mulan=null;
huahu.fight();
//得胜归朝
System.out.println("************");
//向下转型
//4.父类对象强制转换为子类对象(子类类型)
//5.子类调用子类方法
mulan=(Daughter) huahu;
huahu=null;
mulan.dressup();
}
}
输出结果:
三、
、中国南北差异较大,主要体现在饮食上,南方人喜欢吃米饭,北方人比较喜欢吃馒头,现在定义一个Person类,Person类中提供一个name属性,提供一个eat方法;定义一个SouthPerson类,SouthPerson类继承自Person类,重写父类的eat方法,输出“米饭”;定义一个NorthPerson类,继承自Person类,重写父类的eat方法,输出馒头;定义一个厨师类Cook,厨师类中提供一个做饭的方法cook,方法传递一个Person对象参数,在cook方法中调用Person的eat方法;写一个测试类,定义两个人,分别是南方人和北方人,定义一个厨师,调用厨师的cook方法,烹调出适合南北方人习惯食物。
//父类Person
package person02;
public class Person {
public String name;
public void eat(){
}
}
// 子类 南方人 SouthNorth
package person02;
public class SouthPerson extends Person{
@Override
public void eat() {
System.out.println(super.name+"是南方人,吃米饭");
}
}
// 子类 北方人 NorthPerson
package person02;
public class SouthPerson extends Person{
@Override
public void eat() {
System.out.println(super.name+"是南方人,吃米饭");
}
}
// 厨师类 Cook
package person02;
public class Cook {
//进店的是南方人,做米饭,进来的是北方人,做馒头
public void cook(Person p){
if(p instanceof SouthPerson){
SouthPerson sp=(SouthPerson) p;
sp.eat();
}else{
NorthPerson np=(NorthPerson) p;
np.eat();
}
}
}
// 测试类 Test
package person02;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义一个南方人
SouthPerson zhangsan=new SouthPerson();
zhangsan.name="张南方";
// 定义一个北方人
NorthPerson lisi=new NorthPerson();
lisi.name="李北方";
//定义一个厨师
Cook xindongfang=new Cook();
// 调用厨师的cook方法。
xindongfang.cook(zhangsan);
xindongfang.cook(lisi);
}
}
输出结果:、
四、
定义一个书店类BookStore,书店类中提供一个书店名称的属性name,提供一个书的类别的方法bookType;定义一个新华书店类XHBookStore继承自BookStore类,重写父类的bookType方法,输出“售卖中小学生读物”;定义一个东宇书社类DYBookStore继承自BookStore类,重写父类的bookType方法,输出“售卖中学生杂志读物”;定义一个学生类Student,提供一个买书的方法buy,将BookStore作为方法的参数,在buy方法中调用BookStore的bookType方法;写一个测试类,创建东宇书社和新华书店,创建2个学生对象,分别是小学生和中学生,调用学生的buy方法,购买适合该学生阅读的图书
// 父类 书店类
package bookstore;
public class BookStore {
public String name;
public void bookType(){
}
}
// 子类 新华书店类
package bookstore;
public class XHBookStore extends BookStore{
@Override
public void bookType() {
System.out.println(super.name+"售卖中小学生读物");
}
}
// 子类 东宇书社类
package bookstore;
public class DYBookStore extends BookStore{
@Override
public void bookType() {
System.out.println(super.name+"售卖中学生杂志读物");
}
}
// 子类 学生类
package bookstore;
public class Student {
public void buy(BookStore bs){
if(bs instanceof XHBookStore){
XHBookStore xhsp=(XHBookStore) bs;
xhsp.bookType();
}else if(bs instanceof DYBookStore){
DYBookStore dysp=(DYBookStore) bs;
dysp.bookType();
}
}
}
// 测试类
package bookstore;
public class TestBookStore {
public static void main(String[] args) {
XHBookStore xhbs=new XHBookStore();
xhbs.name="新华书店";
DYBookStore dybs=new DYBookStore();
dybs.name="东宇书社";
Student s=new Student();
s.buy(dybs);
s.buy(xhbs);
}
}
输出结果:
五、
定义一个汽水类Drink,汽水类中有一个味道的方法taste;定义一个可口可乐类,Coco继承自汽水类,重写父类的taste方法,输出“我是可口可乐,我是甜汽水”;定义一个盐汽水类SaltDrink继承自汽水类,重写父类的taste方法,输出“我是盐汽水,我是咸的”;定义一个测试类,提供一个售卖汽水的方法sell,接收用户输入的值,如果是“甜的”,就卖给客户甜的汽水,否则卖给客户咸的汽水
// 父类 Drink
package drink;
public class Drink {
public void taste(){
}
}
// 子类 Coco
package drink;
public class Coco extends Drink{
@Override
public void taste() {
System.out.println("我是可口可乐,我是甜汽水");
}
}
// 子类 SaltDrink
package drink;
public class SaltDrink extends Drink{
@Override
public void taste() {
System.out.println("我是盐汽水,我是咸的");
}
}
// 测试类 Test
package drink;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
while(true){
System.out.println("输入你想要的汽水口味:");
Scanner sc=new Scanner(System.in);
String kouwei=sc.nextLine();
Drink drink=sell(kouwei);
drink.taste();
}
}
public static Drink sell(String kouwei){
Drink d=null;
if("甜的".equals(kouwei)){
d=new Coco();
}else if("咸的".equals(kouwei)){
d=new SaltDrink();
}else{
d=new Drink();
System.out.println("口味输入有误!");
}
return d;
}
}
输出结果:
六、
设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括开店、闭店、购物。
设计店铺类子类:
直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。
加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。
折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。N n
要求:
- 所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
- 子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
- 参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
- 手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
- 去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断
- 编写测试类完成相关功能输入和输出
// 父类 店铺类 Store
package store;
public class Store {
private String name;
private String address;
private int renshu;
private int zhucezijin;
//无参构造方法
public Store() {
super();
// TODO Auto-generated constructor stub
}
//有参构造方法
public Store(String name, String address, int renshu, int zhucezijin) {
super();
this.name = name;
this.address = address;
this.renshu = renshu;
this.zhucezijin = zhucezijin;
}
public void kaiDian(){
}
public void biDian(){
}
public void shop(){
}
public void show(){
}
//get()和set()方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getRenshu() {
return renshu;
}
public void setRenshu(int renshu) {
this.renshu = renshu;
}
public int getZhucezijin() {
return zhucezijin;
}
public void setZhucezijin(int zhucezijin) {
this.zhucezijin = zhucezijin;
}
}
// 子类 直营店
package store;
// 直营店
public class DirectSale extends Store{
private String shopManagerName;
private double songHuoWorkerNumber;
private double shangPinQiSongJinE;
private double shangPinZheKouBiLv;
//无参构造方法
public DirectSale() {
super();
// TODO Auto-generated constructor stub
}
//有参构造方法
public DirectSale(String shopManagerName, double songHuoWorkerNumber, double shangPinQiSongJinE,
double shangPinZheKouBiLv) {
super();
this.shopManagerName = shopManagerName;
this.songHuoWorkerNumber = songHuoWorkerNumber;
this.shangPinQiSongJinE = shangPinQiSongJinE;
this.shangPinZheKouBiLv = shangPinZheKouBiLv;
}
// 调用父类构造方法
public DirectSale(String name, String address, int renshu, int zhucezijin) {
super(name, address, renshu, zhucezijin);
}
// 方法重写
@Override
public void kaiDian() {
super.kaiDian();
System.out.println("开店时间是早上8点!");
}
@Override
public void biDian() {
// TODO Auto-generated method stub
super.biDian();
System.out.println("关店时间是晚上8点!");
}
@Override
public void shop() {
// TODO Auto-generated method stub
super.shop();
}
@Override
public void show() {
// TODO Auto-generated method stub
super.show();
System.out.println("本店是直营店");
System.out.println("店长名字是"+this.shopManagerName);
System.out.println("店铺起送金额是"+this.shangPinQiSongJinE);
}
// 送货方法
public void songHuo(){
}
//get()和set()方法
public String getShopManagerName() {
return shopManagerName;
}
public void setShopManagerName(String shopManagerName) {
this.shopManagerName = shopManagerName;
}
public double getSongHuoWorkerNumber() {
return songHuoWorkerNumber;
}
public void setSongHuoWorkerNumber(double songHuoWorkerNumber) {
this.songHuoWorkerNumber = songHuoWorkerNumber;
}
public double getShangPinQiSongJinE() {
return shangPinQiSongJinE;
}
public void setShangPinQiSongJinE(double shangPinQiSongJinE) {
this.shangPinQiSongJinE = shangPinQiSongJinE;
}
public double getShangPinZheKouBiLv() {
return shangPinZheKouBiLv;
}
public void setShangPinZheKouBiLv(double shangPinZheKouBiLv) {
this.shangPinZheKouBiLv = shangPinZheKouBiLv;
}
}
// 子类 加盟店
package store;
//加盟店
public class Franchise extends Store{
private String jiaMengShangName;
private double jiaMengJinE;
private String jiaMengTime;
//无参构造方法
public Franchise() {
super();
}
//有参构造方法
public Franchise(String jiaMengShangName, double jiaMengJinE, String jiaMengTime) {
super();
this.jiaMengShangName = jiaMengShangName;
this.jiaMengJinE = jiaMengJinE;
this.jiaMengTime = jiaMengTime;
}
// 调用父类构造方法
public Franchise(String name, String address, int renshu, int zhucezijin) {
super(name, address, renshu, zhucezijin);
}
// 方法重写
@Override
public void kaiDian() {
// TODO Auto-generated method stub
super.kaiDian();
System.out.println("开店时间是早上8点!");
}
@Override
public void biDian() {
// TODO Auto-generated method stub
super.biDian();
System.out.println("关店时间是晚上8点!");
}
@Override
public void shop() {
// TODO Auto-generated method stub
super.shop();
}
@Override
public void show() {
// TODO Auto-generated method stub
super.show();
System.out.println("本店是加盟店");
System.out.println("店长名字是"+this.jiaMengShangName);
System.out.println("加盟金额是"+this.jiaMengJinE);
System.out.println("加盟时间是"+this.jiaMengTime);
}
// 解约方法
public void jieYue(){
}
//get()和set()方法
public String getJiaMengShangName() {
return jiaMengShangName;
}
public void setJiaMengShangName(String jiaMengShangName) {
this.jiaMengShangName = jiaMengShangName;
}
public double getJiaMengJinE() {
return jiaMengJinE;
}
public void setJiaMengJinE(double jiaMengJinE) {
this.jiaMengJinE = jiaMengJinE;
}
public String getJiaMengTime() {
return jiaMengTime;
}
public void setJiaMengTime(String jiaMengTime) {
this.jiaMengTime = jiaMengTime;
}
}
// 子类 折扣店
package store;
//折扣店
public class Discount extends Store{
private double zuiDaZheKou;
private double zuiXiaoZheKou;
private boolean shiFouDaZhe;
//无参构造方法
public Discount() {
super();
}
// 调用父类构造方法
public Discount(String name, String address, int renshu, int zhucezijin) {
super(name, address, renshu, zhucezijin);
// TODO Auto-generated constructor stub
}
//有参构造方法
public Discount(double zuiDaZheKou, double zuiXiaoZheKou, boolean shiFouDaZhe) {
super();
this.zuiDaZheKou = zuiDaZheKou;
this.zuiXiaoZheKou = zuiXiaoZheKou;
this.shiFouDaZhe = shiFouDaZhe;
}
// 方法重写
@Override
public void kaiDian() {
// TODO Auto-generated method stub
super.kaiDian();
System.out.println("开店时间是早上8点!");
}
@Override
public void biDian() {
// TODO Auto-generated method stub
super.biDian();
System.out.println("关店时间是晚上8点!");
}
@Override
public void shop() {
// TODO Auto-generated method stub
super.shop();
}
@Override
public void show() {
// TODO Auto-generated method stub
super.show();
System.out.println("本店是折扣店");
System.out.println("最大折扣是"+this.zuiDaZheKou);
System.out.println("最小折扣是"+this.zuiXiaoZheKou);
}
public void daZhe(){
}
//get()和set()方法
public double getZuiDaZheKou() {
return zuiDaZheKou;
}
public void setZuiDaZheKou(double zuiDaZheKou) {
this.zuiDaZheKou = zuiDaZheKou;
}
public double getZuiXiaoZheKou() {
return zuiXiaoZheKou;
}
public void setZuiXiaoZheKou(double zuiXiaoZheKou) {
this.zuiXiaoZheKou = zuiXiaoZheKou;
}
public boolean isShiFouDaZhe() {
return shiFouDaZhe;
}
public void setShiFouDaZhe(boolean shiFouDaZhe) {
this.shiFouDaZhe = shiFouDaZhe;
}
}
// 测试类
package store;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean panduan=true;
while(true){
System.out.println("请输入你选择的店铺(直营店、加盟店、折扣店):");
Scanner sc=new Scanner(System.in);
String dianPuXuanZe=sc.nextLine();
if("直营店".equals(dianPuXuanZe)){
DirectSale ds=new DirectSale("张三",3,1000,0.5);
ds.kaiDian();
ds.biDian();
ds.show();
System.out.println("请输入你的购买金额:");
double gouMaiJinE=sc.nextDouble();
double i=ds.getSongHuoWorkerNumber();
double j=ds.getShangPinQiSongJinE();
if(gouMaiJinE>j){
System.out.println("达到商品起送金额");
if(i>0){
System.out.println("可以送货!");
i--;
}else{
System.out.println("送货工人不够,不能送货");
}
}else{
System.out.println("未达到商品起送金额,不可以送货");
}
}else if("加盟店".equals(dianPuXuanZe)){
Franchise f=new Franchise("李四",10000,"2021.08.12");
f.kaiDian();
f.biDian();
f.show();
System.out.println("请输入你的加盟金额:");
double myJiaMenJinE=sc.nextDouble();
double i=f.getJiaMengJinE();
if(myJiaMenJinE>i){
System.out.println("可以加盟");
}else{
System.out.println("加盟费不够,不能加盟");
}
}else if("折扣店".equals(dianPuXuanZe)){
Discount d=new Discount(0.75,0.9,true);
d.kaiDian();
d.biDian();
d.show();
System.out.println("请输入你的购买金额:");
double gouMaiJinE=sc.nextDouble();
if(d.isShiFouDaZhe()){
System.out.println("今天打折");
}else{
System.out.println("今天不打折");
}
}else{
System.out.println("店铺输入错误");
panduan=false;
break;
}
}
}
}
输出结果: