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覆盖,会导致失败,覆盖一定要权限足够大。所以大家都要记得,修饰符都要带着。

  • 相关阅读:
    json 轻解读 转
    android file.mkdir()
    iOS摄像头采集和编码
    对安装React脚手架出错的情况做以详解
    DNGuard Enterprise v2.95 released
    DNGuard Enterprise v3.2 released
    DNGuard 专业版 v2.95 发布
    DNGuard 企业版 v3.1 发布
    Windows 2003 上使用 Windows Live Writer
    .Net 中枚举AppDomains
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7759763.html
Copyright © 2011-2022 走看看