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);

    }
}

原文地址:https://www.cnblogs.com/qianjinyan/p/10825104.html

时间: 2024-10-25 07:54:37

Java 中的多态,一次讲个够之接口实现关系中的多态的相关文章

JAVA_SE基础——45.接口关系下的多态

接口关系下的多态和继承关系下的多态 相差无几,应该更简单些~ 多态: 父类的引用类型变量指向了子类的对象或者是接口类型的引用类型变量指向了接口实现类 的对象. 实现关系下的多态: 接口  变量  = new  接口实现类的对象. package day09; interface Dao{ //接口的方法全部都是非静态的方法. public void add(); public void delete(); } //接口的实现类 class UserDao implements Dao{ publ

Postman-----将 A 请求中 response Body 中的参数值传入到下一个请求 B 的 request body 中作为参数发送请求【一】

问题:将A接口中response body的"id"传入到B接口的request body中. 解决办法: 1.在A接口的test中设置环境变量. 代码:var data = JSON.parse(responseBody);    pm.environment.set("id", data.data.todo_list[0].id); 解释说明:pm.environment.set("id", data.data.todo_list[0].id

【Java并发编程】6、volatile关键字解析&内存模型&并发编程中三概念

转自:http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以重获生机. volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情.由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来

Java Web快速入门——全十讲

Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲(参考<Java Web程序设计基础教程>第1章)1 JSP 和 Java的关系 一般Java指的标注版 Java SE   另外两个版本:Java EE 和 Java ME JSP属于Java EE的一部分.   Java EE:     组件:Web层组件(JSP+Servlet)+业务层组件

【深入理解JVM】:Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其中静态代码块中如果静态成员变量sam不为空,则改变sam的引用.main()方法中创建了2个主

Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释. 非继承关系中的初始化顺序 对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,其中静态代码块中如果静态成员变量sam不为空,则改变sam的引用.main()方法中创建了2个主

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

JAVA 【引用类型】和【对象类型】在【继承】中的异同

介绍 JAVA [引用类型]和[对象类型]在[继承]中的异同.这个问题自己整理过N次.也被人当菜鸟问过N次.所以,在此简单整理一下.以供大家分享. 在继承关系中.一般成员变量是依据引用类型 在继承关系中.静态成员变量是依据引用类型 在继承关系中,一般方法是依据对象类型 在继承关系中,静态方法是依据引用类型 注意 静态成员变量,静态方法是基于类的,本文为了測试观察.所以.会用对象去引用静态成员变量和静态方法. Super Class: package shuai.study.inherit; pu