首先我通过代码模仿了一下java中System.out.print函数,如何输出一个覆盖了toString()方法的类。

我先来解释一个为什么java程序要写接口interface。

  • 比如我们有一个圆形类,和一个正方形类,在两个类中都实现了一个计算面积的方法printArea()(类比于toString)
  • 接着我们要写一个输出面积的函数print()
  • 如果我们不声明接口,那就要写两个print()方法,一个是传递圆形类的print()方法,一个是传递正方形类的print()方法。
  • 如果我们声明接口,那就只要写一个print()方法,把类传递进去就可以了,具体看如下代码:
//声明一个计算面积的接口
public interface PrintArea {double printArea();
}
//声明了一个圆形类
public class Circle implements PrintArea {private int num;public double printArea() {return num * num * Math.PI;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}
}
//声明了一个正方形类
public class Squre implements PrintArea{private long num;@Overridepublic double printArea() {return num * num;}public long getNum() {return num;}public void setNum(long num) {this.num = num;}
}
//主方法
public class Method {public static void printCircle(Circle c){System.out.println(c.printArea());}public static void printSqure(Squre s){System.out.println(s.printArea());}public static void print(PrintArea pa){System.out.println(pa.printArea());}public static void main(String[] args) {Circle circle = new Circle();circle.setNum(23);Squre squre = new Squre();squre.setNum(23);printCircle(circle);printSqure(squre);print(circle);print(squre);}
}

以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解相关推荐

  1. 《美团点评》编程题---有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印

    题目:有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印. 给定一个二位数组arr及题目中的参数n,请返回结果数组. 测试样例: [[1,2,3,4],[5,6,7,8],[9,1 ...

  2. 面向对象的编程思想写单片机程序——(3)学习笔记 之 程序分层、数据产生流程

    系列文章目录 面向对象的编程思想写单片机程序--(1)学习笔记 之 程序设计 面向对象的编程思想写单片机程序--(2)学习笔记 之 怎么抽象出结构体 面向对象的编程思想写单片机程序--(3)学习笔记 ...

  3. 如何用python编写一个绘制马赛克图像的自写程序mask = np.zeros

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  4. python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  5. 全网封神最新最全:用最通俗易懂的方式来讲解http,WebService,Dubbo接口协议接口测试

    目录 一.接口 1)接口分类 2)软件接口分类 3)常见的接口协议 4)接口测试 二.HTTP协议解读 1)http协议:超文本传输协议 2)https:简单的来说,就是http的安全版,在http下 ...

  6. 习题 4.6 有一个函数:。。。 写程序,输入x的值,输出y相应的值。

    ###C程序设计 (第四版) 谭浩强 习题4.6 个人设计 ####有一个函数: ####y{x(x<1)2x−1(1≤x<10)3x−11(x≥10)y \begin {cases} x ...

  7. [译文]通过一个通俗易懂的方式来了解下WebAssembly(一)

    你可能听说过WebAssembly运行起来很快,但是你知道WebAssembly为什么这么快吗?在本系列文章中,我将向您解释为什么WebAssembly是快速的. 首先,先来介绍一下什么是WebAss ...

  8. [学习之道] 修福不修慧,大象披璎珞; 修慧不修福,罗汉托空钵 (学习写程序,只靠补习上课吗?)...

    这是我的备份,原文请看 http://www.dotblogs.com.tw/mis2000lab/archive/2014/09/17/learning-and_do-it_20140917.asp ...

  9. 在 BUF 和 BUF+1、BUF+2 单元分别放有一个无符号字节型数,编程序将其 中最大数存入 MAX 单元,并在屏幕上显示。

    问题描述: 在 BUF 和 BUF+1.BUF+2 单元分别放有一个无符号字节型数,编程序将其 中最大数存入 MAX 单元,并在屏幕上显示. 汇编代码,已调试 DATA SEGMENTBUF DB 7 ...

最新文章

  1. iSCSI原理和实现
  2. qt与mysql的增删改查_Qt数据库与QTableWidget结合的增删改查
  3. python3.6.1安装教程-在Linux上安装Python3.6.1
  4. $unit编译单元声明
  5. 对一组同构对象用单数组表示法实现(算法导论第十章10.3-2)
  6. 《Android安全技术揭秘与防范》——第2章,第2.1节钱从哪里来
  7. java获取request body_HttpServletRequest获取body内容(字符串/二进制)详解
  8. TeamViewer可以实现国际连接吗?
  9. Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
  10. word中插入代码_如何在Word中优雅的插入公式
  11. pyinstaller遇到的问题总结
  12. griddata三维空间插值
  13. 童年修复系列-SNES芯片组介绍及FPGA实现
  14. 七个基本量纲_国际单位制中七个基本物理量
  15. 近几个月Github上最热门的Java项目一览
  16. Win10 双屏:主屏和左右屏设置
  17. 扎心了!37岁被裁,好几个月都没有找到工作,面试大公司被婉拒,无奈只能降薪去小公司,没想到还被人嫌弃技术太落后...
  18. (转)百万年薪的人才泡沫与人工智能的虚假繁荣
  19. python电路仿真_蔡氏电路仿真实验
  20. 滴滴副总裁叶杰平离职,他是出行巨头的AI掌门人

热门文章

  1. hdu 1710 Binary Tree Traversals (二叉树)
  2. FPGA开发全攻略——ISE基本操作
  3. 8款惊艳的HTML5粒子动画特效
  4. 小程序入门学习19--springboot之HelloWorld
  5. Linux系统管理(6)——Linux下启动Redis服务的几种方法
  6. 夺冠没含金量!用python和BI可视化分析,湖人赢在这点上
  7. 深入了解帆软报表系统的启动过程二
  8. 编译c语言源程序得到的目标文件可以直接在dos环境中运行,c语言练习题一.doc
  9. 判断一个点是否在矩形内部_矩形、圆形泄水管规格型号优势
  10. android 日历 课程设计,课程设计-数字日历的设计