当前位置: 首页 > news >正文

2019-1-21作业

作业一:使用多态实现主人领养宠物,和宠物玩的功能,

父类,宠物类:

package com.polym02;

/**
 * 父类 ,宠物类
 */
public abstract class Pet {
   //宠物被领养的方法
    public  Pet yang(Pet pet){
        return pet;
    }
}

子类狗:

package com.polym02;

/**
 * 狗狗类
 */
public class Dog extends Pet {
    //玩的方法
    public void wang() {
        System.out.println("陪狗狗去接飞盘");
    }
   //重写父类被领养的方法
    public  Pet yang(Pet pet){
        System.out.println("给你一只狗狗");
        return pet;
    }
}

子类企鹅:

package com.polym02;

/**
 * 企鹅类
 */
public class Penguin extends Pet {
    //玩的方法
    public  void  wang(){
        System.out.println("带企鹅去游泳。。。。。。");
    }
    //重写父类被领养的方法
    public  Pet yang(Pet pet){
        System.out.println("给你一只企鹅。。。。。");
        return pet;
    }
}

主人类:

package com.polym02;

/**
 * 主人类
 */
public class Master {//带宠物出去玩的方法
    public  void  quWang(Pet pet){
       if(pet instanceof Dog){
           Dog dog = (Dog)pet
           dog.wang();
       }else if (pet instanceof Penguin){
         Penguin pen =(Penguin)pet
           pen.wang();
       }
    }
    //领养宠物的方法
    public Pet lingYang(Pet pet) {
        Pet p = null;
        if (pet instanceof Dog) {
          
            pet.yang(p1);
            p = pet;
        }else if(pet instanceof  Penguin){
           pet.yang(p2);
            p =pet;
        }
        return p;
    }
}

测试类:

package com.polym02;

import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Master m = new Master();
        Pet P1 = new Dog();
        Pet P2 = new Penguin();
        System.out.println("请输入要陪玩的宠物:1,狗狗   2,企鹅");
        int choose = sc.nextInt();
        if (choose==1){
            m.quWang(P1);
        }else{
            m.quWang(P2);
        }
        System.out.println("请输入你需要的宠物:1,狗狗    2,企鹅");
        int choose02 = sc.nextInt();
        if (choose02==1){
            m.lingYang(P1);
        }else{
            m.lingYang(P2);
        }
    }
}

输出结果图:

 

 作业二2:

使用多态实现为宠物喂食:

父类宠物类:

/**
     * 宠物健康值
     */
    private int intimacy=46;
    /**
     * 宠物亲密度
     */
    private int health=0;

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
    }

    public int getIntimacy() {
        return intimacy;
    }

    public void setIntimacy(int intimacy) {
        this.intimacy = intimacy;
    }

    /**
     * 宠物吃食的方法
     */
    public abstract void eat();
}

子类狗:

package com.Polym;

public class Dog extends Pet {
    public  void eat(){
        if(getIntimacy()<50){
            System.out.println("给狗狗吃狗粮和肉骨头");
            setIntimacy(getIntimacy()+20);
            System.out.println("狗狗现在的健康值是:"+getIntimacy());
            setHealth(getHealth()+10);
            System.out.println("狗狗现在和你的亲密度是:"+getHealth());

        }
    }
}

子类猫咪:

package com.Polym;

public class Cat extends Pet {
    public void eat(){
        if(getIntimacy()<50){
            System.out.println("给猫咪吃猫粮和小鱼仔。。。。");
            setIntimacy(getIntimacy()+30);
            System.out.println("猫咪现在的健康值是:"+getIntimacy());
            setHealth(getHealth()+10);
            System.out.println("猫咪现在和你的亲密度是:"+getHealth());
        }
    }
}

主人类:

package com.Polym;

public class Master {
public void feed(Pet pet){
if(pet instanceof Dog){
pet.eat();
}else if(pet instanceof Cat){
pet.eat();
}
}
}

测试类:

public class Test {
    public static void main(String[] args){
        Master m1 = new Master();
        Dog P1 = new Dog();
        Cat P2 = new Cat();
        System.out.println("狗狗现在的健康值是:"+P1.getIntimacy());
        System.out.println("狗狗现在和你的亲密度是:"+P1.getHealth());
        m1.feed(P1);
        System.out.println("猫咪现在的健康值是:"+P2.getIntimacy());
        System.out.println("猫咪现在和你的亲密度是:"+P2.getHealth());
m1.feed(P2);
}
}

 

输出结果图:

 

 课堂笔记:

多态:
同一个引用类型,使用不同的实参执行不同操作
同一个类型使用不同的对象执行的结果有多种就是多态
一般就两种一种是父类作为参数,一种是父类作为反回值

继承,方法重写,父类引用指向子类对象,是实现多态的基础
1.使用多态时,是使用父类类型,但是对象还是子类对象
2.如果子类不重写父类方法,那么当使用多态时,是不能调用子类独有的方法
3.当子类重写父类方法,使用多态调用的方法,看似时父类的方法但实际调用的时子类中重写父类的那个方法,

一个方法没方法体就叫抽象方法
当一个类中有抽象方法的时候这个类就是抽象类,抽象类不一定有抽象方法,
抽象类不能被实列化,实列化没意义
抽象类的子类可以是普通类,该普通方法必须实现抽象类中抽象方法
抽象类的子类是抽象类时,此时可以不实现抽象类中抽象方法
抽象方法必须加关键词abstract
例: public abstract void a();

向上转型:
子类转化父类
父类型 引用变量名 = new 子类型(); 自动转化类型
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类本身的方法
此时通过父类引用变量无法调用子类特有的方法
向下转型:
父类转化子类
子类型 引用变量名 = (子类型)父类的引用变量; 需要强制类型转
实列方法:动态绑定机制 调用属性和方法是子类中的
静态方法:静态绑定机制 调用属性和方法是父类中的

 

代码下载链接:https://pan.baidu.com/s/1JBE5GSu7-Fd_i8pnGsYTng
提取码:ghzq

 

转载于:https://www.cnblogs.com/cxlbzdcom/p/10300851.html

相关文章:

  • bug集合js1--Unexpected token o in JSON at position 1
  • 为什么阿里巴巴不建议在for循环中使用+进行字符串拼接
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • Android进阶(三)Activity启动
  • TCP长连接的一些事儿
  • ObjC中KVC原理简析
  • MySQL 整数(int)数据类型
  • 2018年香港消防处接火警逾3万宗 救护服务超80万宗
  • GCD - Extreme (II) UVA - 11426 数学
  • 博客搭建祭
  • python3 --- locale命名空间让程序更加安全了
  • 学习第一周
  • C# 8将为断言和自动化测试带来Caller Expression Attribute
  • 原生js商品排序
  • 河南减税红利:顶格50%减征 小微企业受益面达98%
  • [ JavaScript ] 数据结构与算法 —— 链表
  • create-react-app做的留言板
  • E-HPC支持多队列管理和自动伸缩
  • export和import的用法总结
  • iOS 颜色设置看我就够了
  • JS 面试题总结
  • Leetcode 27 Remove Element
  • Logstash 参考指南(目录)
  • Material Design
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Netty源码解析1-Buffer
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • php的插入排序,通过双层for循环
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 百度地图API标注+时间轴组件
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • raise 与 raise ... from 的区别
  • 带你开发类似Pokemon Go的AR游戏
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • (1)Android开发优化---------UI优化
  • (ZT)一个美国文科博士的YardLife
  • (超详细)语音信号处理之特征提取
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .naturalWidth 和naturalHeight属性,
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET构架之我见
  • .NET中 MVC 工厂模式浅析
  • .net中生成excel后调整宽度
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ Linux ] Linux信号概述 信号的产生
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [Android]一个简单使用Handler做Timer的例子
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [C++]Leetcode17电话号码的字母组合
  • [iOS]中字体样式设置 API