对于java中的抽象类,抽象方法,接口,实现接口等具体的概念就不在这里详细的说明了,网上书本都有很多解释,主要是我懒,下面通过一个例子来说明其中的精髓要点,能不能练成绝世武功,踏上封王之路,就看自己的的啦(不要误会,我指的只是我自己啦啦)
用接口实现一个简单的计算器

1、利用接口做参数,写个计算器,能完成+-*/运算
(1)定义一个接口Compute含有一个方法int computer(int n,int m);
(2)设计四个类分别实现此接口,完成+-*/运算
(3)设计一个类UseCompute,含有方法: public void useCom(Compute com, int one, int two)
此方法要求能够:

  • 1.用传递过来的对象调用computer方法完成运算
  • 2.输出运算的结果
    (4)设计一个测试类,调用UseCompute中的方法useCom来完成+-*/运算
//父类.并且使用用接口
package cn.yjlblog.wwww;

public interface Compute {
    int computer(int n,int m);//抽象方法,胜率abstract ,public

}
//子类add 实现加法运算
package cn.yjlblog.wwww;

public class add implements Compute{

    @Override //接口的实现类和抽象类的子类是一样的,要想可以使用new 一个对象,就必须对“抽象类”里的方法
            //进行重写
    public int computer(int n, int m) {
        // TODO Auto-generated method stub
        return n+m;
    }

}
package cn.yjlblog.wwww;
//子类subtract 实现减法运算
public class subtract implements Compute{

    @Override
    public int computer(int n, int m) {
        // TODO Auto-generated method stub
        return n-m;
    }

}
子类multiplied 实现乘法运算
package cn.yjlblog.wwww;

public class multiplied implements Compute{

    @Override
    public int computer(int n, int m) {
        // TODO Auto-generated method stub
        return n*m;
    }

}
package cn.yjlblog.wwww;
//子类divided 实现整除运算
public class divided implements Compute{

    @Override
    public int computer(int n, int m) {
        // TODO Auto-generated method stub
        return n/m;
    }

}
//应用类UseComepute 用来
package cn.yjlblog.wwww;

public class UseComepute {
    public void useCom(Compute com,int one,int two){
        int x = com.computer(one, two);
        System.out.println("运算结果为:"+x);

    }

}
//测试类Test
package cn.yjlblog.wwww;

public class Test {
    public static void main(String[] args) {
        UseComepute uc = new UseComepute();//应用类生成对象,使用useCome 方法
        int one = 10;
        int two = 20;
        Compute ad = new add();//接口的多态
        Compute sub = new subtract();
        Compute mul= new multiplied();
        Compute div = new divided();
        uc.useCom(ad, one, two);
        uc.useCom(sub, one, two);
        uc.useCom(mul, one, two);
        uc.useCom(div, one, two);

        //哈哈,类的名字忘记大写了

    }

}

java抽象类、抽象方法、接口、实现接口详解的更多相关文章

  1. “全栈2019”Java第六十二章:接口与常量详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. “全栈2019”Java第六十四章:接口与静态方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. c# WebApi之接口返回类型详解

    c# WebApi之接口返回类型详解 https://blog.csdn.net/lwpoor123/article/details/78644998

  4. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

  5. Java线程创建形式 Thread构造详解 多线程中篇(五)

    Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 ...

  6. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  7. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  8. Java 反射 设计模式 动态代理机制详解 [ 转载 ]

    Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...

  9. (7)Java数据结构--集合map,set,list详解

    MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...

  10. java实现微信扫一扫详解

    java实现微信扫一扫详解 一.微信JS-SDK参数配置及查找 JS安全域名配置(查找:微信公众号里-公众号设置-功能设置页) 注:1.安全域名外网必须可以访问的到  2.域名不能有下划线  3.要将 ...

随机推荐

  1. PHP初入--表单元素

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  2. Mac 下如何使用sed -i命令

    今天在学习Linux的过程中发现了sed这一项指令 首先,sed的全称是:Stream Editor 调用sed命令有两种形式: sed [options] 'command' file(s) sed ...

  3. Beta冲刺前准备

    一.介绍小组新成员,Ta担任的角色. 201421123121 栗海辉 来自Sugar Free 风格:低调中的高调,给你不一样的视觉 擅长的技术:C语言/JAVA 在曾经的团队里面担任主要编程人员, ...

  4. 201521123104《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: pu ...

  5. 201521123112《Java程序设计》第12周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 将Student对象(属性:int id, String name,int age,double ...

  6. 201521123033《Java程序设计》第14周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...

  7. 201521123026《Java程序设》 第10周学习总结

    1. 本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1.守护线程:setDaemon(true or false),如果所有前台线程死亡,守护线程自动结束,一般 ...

  8. Linux下服务器重启

    Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdow ...

  9. html5新特性与HTML的区别

    * HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加. 绘画 canvas; 用于媒介回放的 video 和 audio 元素; 本地离线存储 localSt ...

  10. Codeforce 854 A. Fraction

    A. Fraction time limit per test 1 second memory limit per test 512 megabytes input standard input ou ...