Java 中的多态,一次讲个够之接口实现关系中的多态
上文还没有写完,这一篇继续
Java 中的多态,一次讲个够之继承关系中的多态
https://www.cnblogs.com/qianjinyan/p/10824576.html
接口实现关系,和继承区别不是很大,
接口和继承从定义上,无非一个对象能实现两个接口,解决了子类只能单继承的问题
先来两个接口,一个是动物类,一个是哺乳动物类,先不要管这两个类的关系,这就是没有相互关系的两个接口
public interface Animal {
void eat();
void work();
}
public interface Mammal {
}
public class Cat implements Animal,Mammal{
public void eat() {
System.out.println("===我是猫咪我要吃鱼");
}
public void work() {
System.out.println("===我是猫咪我负责抓老鼠");
}
public int numberOfLegs(){
return 4;
}
}
public class Dog implements Animal,Mammal {
@Override
public void eat() {
System.out.println("====我是小狗我要吃骨头");
}
@Override
public void work() {
System.out.println("====我是小狗我负责看家");
}
public void travel(){
System.out.println("Dog travels");
}
public int numberOfLegs(){
return 4;
}
}
public class Chicken implements Animal {
public void eat() {
System.out.println("===我是鸡仔我要吃粗粮");
}
public void work() {
System.out.println("===我是鸡仔我负责下蛋");
}
public int numberOfLegs(){
return 2;
}
}
测试类:
public class TestM {
public static void main(String args[]){
Cat m = new Cat();
m.eat();
m.work();
int number =m.numberOfLegs();
System.out.println(number);
Animal animal = new Cat();
animal.eat();
animal.work();
int animalnumber =((Cat)animal).numberOfLegs();
System.out.println(number);
Mammal mammal = new Cat();
((Cat)mammal).eat();
((Cat)mammal).work();
int mammalnumber =((Cat)mammal).numberOfLegs();
System.out.println(number);
Animal ch = new Chicken();
ch.eat();
ch.work();
int ch_legs =((Chicken)ch).numberOfLegs();
System.out.println(ch_legs);
}
}

Java 中的多态,一次讲个够之接口实现关系中的多态的更多相关文章
- java 接口实现关系下的多态
2019独角兽企业重金招聘Python工程师标准>>> 多态: 父类的引用类型变量指向了子类的对象 或者 是接口类型的引用类型变量指向了接口实现类的对象. 实现关系下的多态: ...
- 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-7 标识关系中使用依赖实体 问题 你想在标识关系中插入,更新和删除一个依赖实体 ...
- JAVA_SE基础——50.接口关系下的多态
接口关系下的多态和继承关系下的多态 相差无几,应该更简单些~ 多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象. 实现关系下的多态: 接口 变量 = ...
- Postman-----将 A 请求中 response Body 中的参数值传入到下一个请求 B 的 request body 中作为参数发送请求
问题:将A接口中response body的"id"传入到B接口的request body中. 解决办法: 1.在A接口的test中设置环境变量. 代码:var data = JS ...
- dgraph解决社交关系中的正反向查找
dgraph解决社交关系中的正反向查找 本篇介绍的是, 社交关系中的关注者与被关注者在dgraph中如何实现查找. 对dgraph的基本操作不太清楚的可以看看我之前写的博客 dgraph实现基本操作 ...
- hibernate 一对多关系中的孤儿属性
@OneToMany(targetEntity = BenefitType.class, mappedBy = "sitePerson",cascade = CascadeType ...
- Java Web快速入门——全十讲
Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲 ...
- java锁与监视器概念 为什么wait、notify、notifyAll定义在Object中 多线程中篇(九)
在Java中,与线程通信相关的几个方法,是定义在Object中的,大家都知道Object是Java中所有类的超类 在Java中,所有的类都是Object,借助于一个统一的形式Object,显然在有些处 ...
- 【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
随机推荐
- vue-slicksort拖拽组件
vue-slicksort拖拽组件 安装 通过npm安装 $ npm install vue-slicksort --save 通过yarn安装 $ yarn add vue-slicksort 插件 ...
- Jenkins占用内存较大解决办法
主机启动jenkins后导致内存占用较大 登录主机top按键M按消耗内存排序 未调优前查看进程 修改配置文件 /usr/local/jenkins-tomcat/bin/catalina.sh 增加一 ...
- iOS-登录加密也许用到,反转字符串
- (NSString *)stringByReversed{// NSMutableString *s = [NSMutableString string];// for (NSUInt ...
- celery的log如何传递给django,由django管理
celery自己管理log目录 celery worker --autoscale=4,1 --app=erebus.celeryapp:app -l info -f /home/admin/outp ...
- macpro锁屏后没有进入睡眠
使用命令pmset -g查看,如图,钉钉阻止了屏幕的睡眠,找了下钉钉的配置,也没有发现有关的内容,重启钉钉后问题解决 displaysleep 10 (display sleep prevented ...
- Vector3.Angle问题
Angle角度 public static float Angle(Vector3 from, Vector3 to); 返回的角度总是两个向量之间的较小的角(实测返回不大于 180 度, 并不是 u ...
- 【计算机视觉】OpenCV读取视频获取时间戳等信息(PS:经测试并不是时间戳,与FFMPEG时间戳不一样)
OpenCV中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API. 1.VideoCapture类的构造函数: C++: VideoCapture::VideoCapt ...
- thinkphp5 引用 phpass加密算法
引入phpass thinkPHP5 放到扩展目录里 自动加载配置 直接实例化 // 初始化散列器为不可移植(这样更安全) $PasswordHashs = new \PasswordHashs(8, ...
- xml 数组 互相转换方法
public function xmlToArray($xml) { //将XML转为array $array_data = json_decode(json_encode(simplexml_loa ...
- tab页签
<div class="fl" id="newsBox"> <div class="tab1 grayBar"> & ...