专栏首页Java帮帮-微信公众号-技术文章全总结Java基础-day11-接口;多态案例练习

Java基础-day11-接口;多态案例练习

Java基础-day11-接口&多态案例练习

题目要求1(多态):

定义家类

方法:饲养动物

动物类:

属性:年龄、姓名

方法:吃饭、睡觉

猫类、狗类、猪类均为动物类的一种。

创建家类对象,调用家的饲养动物方法。

具体代码实现:

package StudentJavaSEday11;
/**
 * 动物类
 * @author 奋斗蒙
 *
 */
public abstract class Animal {
 private String name;
 private int age;
 public abstract void eat();
 public abstract void sleep();
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
}
package StudentJavaSEday11;
/**
 * 猫类 继承动物类 并有自己的特定功能
 * 
 * @author 奋斗蒙
 *
 */
public class Cat extends Animal {
 @Override
 public void eat() {
 System.out.println("猫吃鱼");
 }
 @Override
 public void sleep() {
 System.out.println("猫躺着睡");
 }
 public void catchMouse() {
 System.out.println("猫抓老鼠");
 }
}
package StudentJavaSEday11;
/**
 * 狗类 继承动物类  没有特定功能
 * @author 奋斗蒙
 *
 */
public class Dog extends Animal {
 @Override
 public void eat() {
 System.out.println("狗吃肉");
 }
 @Override
 public void sleep() {
 System.out.println("趴着睡");
 }
}
package StudentJavaSEday11;
/**
 * 猪类  继承动物类  没有特定功能
 * @author 奋斗蒙
 *
 */
public class Pig extends Animal {
 @Override
 public void eat() {
 System.out.println("猪什么都吃");
 }
 @Override
 public void sleep() {
 System.out.println("猪吃完了就睡");
 }
}
package StudentJavaSEday11;
/**
 * 家类  宠物买到家   喂它吃饭
 * @author 奋斗蒙
 *
 */
public class Home {
 // 饲养动物的方法
 public void feedAnimal(Animal a) {
 a.eat();
 }
}
package StudentJavaSEday11;
/**
 * 测试
 * @author 奋斗蒙
 *
 */
public class Test {
 public static void main(String[] args) {
 Home home = new Home();
 //多态
 Animal a = new Dog();
 Cat c = new Cat();
 Pig p = new Pig();
 //调用家的饲养动物方法
 home.feedAnimal(a);
 home.feedAnimal(c);
 home.feedAnimal(p);
 }
}

运行结果:

题目要求2(接口与多态):

定义看门的功能接口:

方法:看门

家类中添加新的功能:安排宠物看家方法

假设:猪和狗具备看家的功能

创建家类对象,调用安排宠物看家的方法

家类看家的方法定义时无法为动物类,因为并不是所有的类均有看门的方法,这里设计为狗与猪类具有看门的方法,则二者可以实现看门接口,获取看门方法,重写看门方法。在定义看门的方法时,定义接收看门接口的类型。则在实际调用方法时,只要是实现了该接口的类的对象均可以传入。

具体代码实现:

package StudentJavaSEday11;
/**
 * 动物类
 * @author 奋斗蒙
 *
 */
public abstract class Animal {
 private String name;
 private int age;
 public abstract void eat();
 public abstract void sleep();
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
}
package StudentJavaSEday11;
/**
 * 猫类 继承动物类 并有自己的特定功能
 * 
 * @author 奋斗蒙
 *
 */
public class Cat extends Animal {
 @Override
 public void eat() {
 System.out.println("猫吃鱼");
 }
 @Override
 public void sleep() {
 System.out.println("猫躺着睡");
 }
 public void catchMouse() {
 System.out.println("猫抓老鼠");
 }
}
package StudentJavaSEday11;
public interface LookDoor {
 // 定义看门接口
 public abstract void LookDoor();
}
package StudentJavaSEday11;
/**
 * 狗类 继承动物类  没有特定功能
 * @author 奋斗蒙
 *
 */
public class Dog extends Animal implements LookDoor {
 @Override
 public void eat() {
 System.out.println("狗吃肉");
 }
 @Override
 public void sleep() {
 System.out.println("趴着睡");
 }
 @Override
 public void LookDoor() {
 System.out.println("狗咬人,看谁不爽就一口");
 }
}
package StudentJavaSEday11;
/**
 * 猪类 继承动物类 没有特定功能
 * 
 * @author 奋斗蒙
 *
 */
public class Pig extends Animal implements LookDoor {
 @Override
 public void eat() {
 System.out.println("猪什么都吃");
 }
 @Override
 public void sleep() {
 System.out.println("猪吃完了就睡");
 }
 @Override
 public void LookDoor() {
 System.out.println("猪拱人,哼哼哼");
 }
}
package StudentJavaSEday11;
/**
 * 家类 宠物买到家 喂它吃饭
 * 
 * @author 奋斗蒙
 *
 */
public class Home {
 // 饲养动物的方法
 public void feedAnimal(Animal a) {
 a.eat();
 }
 // 看门方法
 public void LookDoor(LookDoor lk) {
 lk.LookDoor();
 }
}
package StudentJavaSEday11;
/**
 * 测试
 * @author 奋斗蒙
 *
 */
public class Test {
 public static void main(String[] args) {
 Home home = new Home();
 //多态
 Animal a = new Dog();
 Cat c = new Cat();
 Pig p = new Pig();
 Dog d = new Dog();
 //调用家的饲养动物方法
 home.feedAnimal(a);
 home.feedAnimal(c);
 home.feedAnimal(p);
 //多态
 LookDoor lk = new Dog();
 LookDoor lk2 = new Pig();
 //调用看门方法
 home.LookDoor(lk);
 home.LookDoor(lk2);
 }
}

运行结果:

个人完成-笔记本电脑案例

案例介绍

定义USB接口(具备开启功能、关闭功能),笔记本要使用USB设备,即笔记本在生产时需要预留可以插入USB设备的USB接口,即就是笔记本具备使用USB设备的功能,但具体是什么USB设备,笔记本并不关心,只要符合USB规格的设备都可以。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,不然鼠标和键盘的生产出来无法使用

进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘

l USB接口,包含开启功能、关闭功能

l 笔记本类,包含运行功能、关机功能、使用USB设备功能

l 鼠标类,要符合USB接口

l 键盘类,要符合USB接口、

本文分享自微信公众号 - Java帮帮(javahelp),作者:奋斗蒙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 24(02)多线程锁,线程通讯,线程组,线程池,多线程三种方式,匿名内部类,定时器,设计模式,单例模式,Runtime

    (6)多线程实现的第三种方案 package cn.itcast_09;(1) import java.util.concurrent.Callable; //...

    Java帮帮
  • 第十一天 面向对象-接口多态【悟空教程】

    Java帮帮
  • 【选择题】Java基础测试八(16道)

    【选择题】Java基础测试八(16道) 101.下面哪个流类属于面向字符的输入流( D ) A)BufferedWriter ...

    Java帮帮
  • 设计模式-里氏替换

    先来看个最正宗的定义 如果对每一个类型为S的对象o1,都有类型为T的对 象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变 ...

    yiduwangkai
  • 自定义注解与常用设计模式

    注解分为:内置注解,自定义注解。内置注解就是JDK 自带的,而自定义注解则是自己定义的比如许多框架(spring) 用到的

    斯文的程序
  • 第76节:Java中的基础知识

    设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat

    达达前端
  • 依赖注入容器-- Autofac

    Autofac---Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高...

    小世界的野孩子
  • Java面向对象之抽象类,接口

    抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中...

    二十三年蝉
  • 策略模式——运筹帷幄

    三国情景再现: 诸葛亮在刘备去东吴招亲之前,特授予伴郎赵云三个锦囊,说是按天机拆开解决棘手问题。

    100000860378
  • Java开发中的23种设计模式详解

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

    用户5640963

扫码关注云+社区

领取腾讯云代金券