Java基础-day11-接口;多态案例练习
时间:2022-05-04
本文章向大家介绍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教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- centos安装jdk1.8时出现没有/lib/ld-linux.so.2:这个文件的原因分析
- Linux多线程编程快速入门
- Linux添加swap分区的方法
- linux下vsftpd的安装及配置使用详细步骤(推荐)
- Linux分区格式化的命令
- Linux调试工具GDB使用简易教程
- Linux 挂载分区的方法
- 使用Python生成Shell命令,批量执行程序代码解析
- 基于Ubuntu 18.04配置固定IP的方法教程
- 详细解读linux下swap分区的作用
- Linux下将源文件编译成目标文件的过程解析
- Linux使用vim编辑文件保存时报E514:write error (file system full?)问题解决
- Linux下怎么切换使用两个版本的JDK
- Linux下Nginx安装的方法(pcre和openssl)
- Apache设置反向代理的方法