zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第九章-接口-定义interface

    一.

    之前讲述了抽象类,里面既可以定义抽象方法,也可以定义非抽象方法。

    现在我们要讲的是一种特殊情况。下面是举的例子,内容就是两个抽象方法,可以说由于类中有了抽象方法,所以类就成了抽象类

    上面这个类,我们可以用另外一种方式定义,也就是说当一个抽象类中的方法全都抽象的时候,(这是为了引出接口的由来)

    (当四条边都相等时,就不叫长方形,而是叫正方形。)

    这仅仅是为了引出接口,它在表现上确实是这样,但实际上它俩有很严重的不同。

    二.

    接口该如何定义。

    (至少接口在定义的时候,比抽象类书写要简便一些,interface Demo和abstract class Demo的区别)

    这就叫做定义接口,和定义类是一样的。到这可以明确一点的是,接口中的方法都是抽象的。(接口的定义形式)

    虽然它不是class关键字定义的类,但是编译完还是class类文件。因为java都是以class文件来封装的字节码数据的。

    interface仅仅是换了一种表现形式。

    接口的描述基本介绍完了,里面除了抽象方法以外,里面还能定义一种东西,就是全局常量

    其实除了上面两个之外,还有其他的东西,但是不常见。

    凭什么说是全局常量,就是由于修饰符决定的,public static final。

    抽象方法的修饰符也是固定的,public abstract。

    因此,定义接口的时候,可以这么定义,

    接口得这么定义内容,必须的。

    看上面的截图,可以得出下面的结论。(权限都是最大的)

    接口中修饰符非常多,非常麻烦,一不小心,比如说漏写了一个修饰符。

    DOS编译没有问题。

    再漏写一个static,编译也没问题。

    注意:要是忘写了,系统会帮你加上。这些成员都是固定修饰符,什么是固定?只要前面写的是interface,它里面就全都是固定的,即使向下面那样的int NUM=4,也会将前面的加上。

    由于固有形式的规定,最终接口可以写成下面的形式。虽然这么写可以,是简化了,但是阅读性很差。

    带来两个问题,对于这里的NUM,如果前面不加修饰的话,很可能就以为它就是个变量,(实际是个常量),你不知道它居然可以通过接口型调用,(它是static修饰,必然可以是通过类名调用)。讲完属性,讲行为。大家都知道show1();是抽象方法,没写关键字怎么看出来的,尾部是();  这样的,就是抽象的。那么抽象方法可以被覆盖,这种情况很有可能覆盖错(show1();)。原因是,它的权限是public,而且不写的话,如果你用非public覆盖,会导致失败,覆盖一定要权限足够大。所以大家都要记得,修饰符都要带着

    ---恢复内容结束---

    一.

    之前讲述了抽象类,里面既可以定义抽象方法,也可以定义非抽象方法。

    现在我们要讲的是一种特殊情况。下面是举的例子,内容就是两个抽象方法,可以说由于类中有了抽象方法,所以类就成了抽象类

    上面这个类,我们可以用另外一种方式定义,也就是说当一个抽象类中的方法全都抽象的时候,(这是为了引出接口的由来)

    (当四条边都相等时,就不叫长方形,而是叫正方形。)

    这仅仅是为了引出接口,它在表现上确实是这样,但实际上它俩有很严重的不同。

    二.

    接口该如何定义。

    这就叫做定义接口,和定义类是一样的。到这可以明确一点的是,接口中的方法都是抽象的。(接口的定义形式)

    虽然它不是class关键字定义的类,但是编译完还是class类文件。因为java都是以class文件来封装的字节码数据的。

    interface仅仅是换了一种表现形式。

    接口的描述基本介绍完了,里面除了抽象方法以外,里面还能定义一种东西,就是全局常量。

    其实除了上面两个之外,还有其他的东西,但是不常见。

    凭什么说是全局常量,就是由于修饰符决定的,public static final。

    抽象方法的修饰符也是固定的,public abstract。

    因此,定义接口的时候,可以这么定义,

    接口得这么定义内容,必须的。

    看上面的截图,可以得出下面的结论。(权限都是最大的)

    接口中修饰符非常多,非常麻烦,一不小心,比如说漏写了一个修饰符。

    DOS编译没有问题。

    再漏写一个static,编译也没问题。

    注意:要是忘写了,系统会帮你加上。这些成员都是固定修饰符,什么是固定?只要前面写的是interface,它里面就全都是固定的,即使向下面那样的int NUM=4,也会将前面的加上。

    由于固有形式的规定,最终接口可以写成下面的形式。虽然这么写可以,是简化了,但是阅读性很差。

    带来两个问题,对于这里的NUM,如果前面不加修饰的话,很可能就以为它就是个变量,(实际是个常量),你不知道它居然可以通过接口型调用,(它是static修饰,必然可以是通过类名调用)。讲完属性,讲行为。大家都知道show1();是抽象方法,没写关键字怎么看出来的,尾部是();  这样的,就是抽象的。那么抽象方法可以被覆盖,这种情况很有可能覆盖错(show1();)。原因是,它的权限是public,而且不写的话,如果你用非public覆盖,会导致失败,覆盖一定要权限足够大。所以大家都要记得,修饰符都要带着。

  • 相关阅读:
    codechef T4 IPC Trainers
    超低延迟直播系统WebRTC编译Android报错UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe6 in position
    网络穿透/视频组网平台EasyNTS上云网关进行视频拉转推报错failed-init Connect failed: I/O error
    WebRTC网页远程视频会议系统EasyRTC 在新版谷歌浏览器 87 及部分版本黑屏问题的优化
    【解决方案】基于RTSP/RTMP/GB28181协议视频平台EasyCVR搭建的金融系统担保监控平台的设计与实现
    视频综合管理平台EasyNVS是如何接入EasyNVR监控系统实现视频通道的统一管理?
    【解决方案】TSINGSEE青犀视频安防可视化解决方案搭建“产业大脑”,打造服务型智慧政府
    【解决方案】TSINGSEE青犀视频EasyCVR智能监控平台完善生鲜门店智能监控分析体系
    web/IOS/android视频智能分析平台EasyCVR接入视频对通道分组后通道仍显示为空如何修复?
    【解决方案】如何通过视频智能分析平台EasyCVR人脸识别功能实现国家电网可视化智能安防监控?
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7759763.html
Copyright © 2011-2022 走看看