Java第一篇:为什么是接口?
好家伙,
写了一道Java作业:

一道简单的接口练习题
而答案也比较简单

public class Demo1 {
public static void main(String[] args) {
Circle cir = new Circle();
Rectangle rec = new Rectangle();
cir.setR(4);
rec.setLength(3);
rec.setWidth(2);
System.out.println("面积为:"+cir.area()+"\t周长为"+cir.perimeter());
System.out.println("面积为:"+rec.area()+"\t周长为"+rec.perimeter());
}
}
//定义接口
interface IShape1{
public abstract double area();
}
interface IShape2{
public abstract double perimeter();
}
//定义类
class Circle implements IShape1,IShape2{
static final double pl=3.14;
double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public double area() {
return pl*r*r;
}
public double perimeter(){
return 2*pl*r;
}
}
class Rectangle implements IShape1,IShape2{
double length;
double width;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double area() {
return width*length;
}
public double perimeter(){
return 2*(width+length);
}
}
那么问题来了,
接口存在的意义是什么?

(他好像什么都说了,又好像什么都没说)
看到了一个很棒的解释:
接口的作用就是把使用接口的人和实现接口的人分开,
实现接口的人不必要关心谁去使用,而使用接口的人也不用关心实现的细节。
来自:java中接口的意义 - 简书 (jianshu.com)
举个例子:
我的笔记本的触摸板实在是太难用了,我希望能外接一个鼠标,
而这个鼠标使用统一的usb插头,那么我把这个鼠标的插口插到接口中,
就可以使用鼠标了
那么接口的意义就是:
(我给你一个用我的方法)
1.规范性:
如果一个项目比较庞大,那么就需要定义一些主要的接口,
再比如,我给笔记本接鼠标,接键盘,都是usb口的,二笔记本也提供了多个usb口,
2.拓展性:
比如有一个类,实现了某个功能,突然有一天,发现这个类满足不了需求了,
3.便于维护:
出bug了,可以按着接口功能来一个个改,
(你定义接口接口的时候肯定要确定这个接口是负责干嘛的)
这个好理解,鼠标坏了,修鼠标,或者换一个,
4.安全:就是安全,
(新人浅薄理解,欢迎指正)
Java第一篇:为什么是接口?的更多相关文章
- 学习Java第一篇——Java 安装及环境搭配
内容提要: 1.下载JDK: 2.安装JDK: 3.配置JDK; 第一,下载JDK: 1.登陆网址:www.oracle.com 2.点击 Downloads 3.选择 Java SE 4.选择 ...
- java提高篇(九)-----实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- java提高篇(八)-----实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结.所以下面给大家分享一下我的经验: 微信公众号是什么? 官网的介绍:再小的个 ...
- 从.Net到Java学习第一篇——开篇
以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...
- Java Nested Classes(内部类~第一篇英文技术文档翻译)
鄙人最近尝试着翻译了自己的第一篇英文技术文档.Java Nested Classes Reference From Oracle Documentation 目录 嵌套类-Nested Classes ...
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
- Java并发包下锁学习第一篇:介绍及学习安排
Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...
- Java中常用的七个阻塞队列介绍第一篇
Java中常用的七个阻塞队列介绍第一篇 在上一篇我们对Java中的队列分类做了简单的介绍.本文咱们主要来聊聊阻塞队列中的七个常用子类.这七个阻塞队列的学习步骤:先看源码,分析完源码之后,我们再来对每个 ...
随机推荐
- python-将print内容保存到文件
通过sys.stdout得到print输出的内容,再进行保存 import sys class Logger(object): def __init__(self, file_path: str = ...
- 教你如何用网页开发APP
用到的工具: HBuilderX app开发版1.首先你得网站必须是上线的,然后明确这一点后,点击打开HBuilderX.在文件里找到新建项目,选择wap2App,将下面信息填写完整,然后创建. 2. ...
- 基于Vite+React构建在线Excel
Vite是随着Vue3一起发布的一款新型前端构建工具,能够显著的提升前端开发体验,它主要由两部分组成: (1)一个开发服务器,它基于**原生ES模块提供了丰富的内建功能,如速度快到惊人的 模块热更新( ...
- POI导出复杂Excel,合并单元格(1)
/** * 导出复杂excel 合并单元格 (HSSFWorkbook) */ @GetMapping("/testHSSFWorkbook.do") public void te ...
- 【微服务专题之】.Net6下集成消息队列上-RabbitMQ
微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助,欢迎关注] .Net中RabbitMQ的使用 [微服务专题之].N ...
- lerna源码阅读
能够找到入口文件 能够本地调试
- .NetCore|.Net6 gRPC服务开发及本地调试
前言 最近在项目中实装应用了gRPC技术,本着能把技术描述出来给别人能看的懂的思想及作为自己学习笔记的心态编写了此文.因为在实际项目中是webApi接口和gRPC接口使用在同一项目服务中,所以本文的例 ...
- HMS Core音频编辑服务支持7种音频特效,助力一站式音频处理
多媒体时代,音频作为内容传播中的重要形式,因其不受空间限制.认知负担小.声音元素多样化等特点,广泛应用于短视频制作.儿童在线教育.有声阅读.游戏等领域产品,在各种形式的音频呈现过程中,合理添加音效能够 ...
- CF1703E Mirror Grid 题解
给定一个矩阵,判断最少将多少个格反转后使得旋转零度,九十度,一百八十度,二百七十度相等. 枚举矩阵每个位置是 \(0\) 还是 \(1\),若已经判断过则跳过,全统 \(1\) 和全统 \(0\) 取 ...
- 第七天python3 函数、参数及参数解构(二)
函数参数 参数规则: 参数列表参数一般顺序是:普通参数<--缺省参数<--可变位置参数<--keyword-only参数(可带缺省值)<--可变关键字参数 def fn(x,y ...