• Java接口总结


    接口的定义:

      使用interface来定义一个接口。接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成,定义接口的基本语法如下:

    [修饰符] interface 接口名 [extends 父接口名列表]{
        [public] [static] [final] 变量;
        [public] [abstract] 方法;
    }

    修饰符:可选参数,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。

    接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。

    extends父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。

    方法:接口中的方法只有定义而没有被实现。

    注意:接口名一般都有一个不成文的规定,即第一个字母为I。

    例:

    public interface IJiSuan {
        public void QiuMianJi();
        public void QiuZhouChang();
    }
    public interface IXingZhuang {
        public void Hua();
    }
    public abstract class SiBianXing implements IJiSuan, IXingZhuang {
        public void Hua(){
            System.out.println("正在画一个四边形");
        }
    }
    public class JuXing extends SiBianXing {
        private int a;
        private int b;
        public JuXing(int a,int b){
            this.a  = a;
            this.b = b;
        }
        @Override
        public void QiuMianJi() {
            double s = a*b;
            System.out.println(s);
        }
    
        @Override
        public void QiuZhouChang() {
            double c = a+b+a+b;
            System.out.println(c);;
            
        }
    
        public void Hua(){
            System.out.println("正在画一个矩型");
        }
    }

    可以对比看出

      接口用关键字interface声明。

      接口的地位等同于class,接口中的所有方法都是抽象方法。

      接口中在定义方法的时候,可以使用abstract关键字,也可以省略abstract关键字,(大多数时候都是省略的),方法仍是抽象的,不能有实现的花括号。

      接口和抽象类的功能类似,接口也不能实例化,可以将接口看作是一种特殊的抽象类(全是抽象方法)。

      接口的多态用法和抽象类也类似,接口类型的引用可以指向实现了这个接口的类的对象。

    提到接口,就会联想到抽象,此时大家都会感觉接口和抽象很相似,那么他们有什么区别?

      1.接口本身就是抽象的,所以他的方法必须全部都是抽象的方法,但是抽象类中的方法可以是抽象的,也可以是具体的,详见前一篇内容对抽象类的解释。

      2.一个类可以实现接口,(类似于父子类之中用extends继承)采用关键字implement。大家都知道Java是单继承的,但是一个类可以实现多个接口,如上文中写的SiBianXing就实现了IJiSuan, IXingZhuang两个接口。

      3.如果一个类实现了一个接口或者多个接口,如果这个类是抽象类,那么这个类就不用实现接口的全部内容,如上例中SiBianXing定义的就是一个abstract抽象类,所以不用实现IJiSuan, IXingZhuang两个接口中所有的内容。

      4.同理于3,如果一个类实现了一个接口或者多个接口,如果这个类不是抽象类,是一个具体类的话,那么这个类就必须实现接口的全部内容,如上例中的JuXing,虽然JuXing是继承的SiBianXing,但是SiBianXing是一个抽象类,并没有实现所有接口的内容,而且JuXing没有定义abstract,是一个具体类,那么JuXing就必须把IJiSuan, IXingZhuang两个接口中所有的内容全部实现,也就是如上例中所写。

  • 相关阅读:
    错误滚动条eclipse快速定位到错误处
    路径原因linux下tomcat无法启动
    提示命令命令行将U盘文件系统转换成ntfs
    客户传真第四部分 个人理财风险防范8.当心银行汇款引发的诈骗
    请求错误[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
    范围元【2013 GDCPC】有为杯 广东ACM省赛小总结
    编程程序国外程序员的BASIC情结——我的编程生涯始于BASIC
    执行取消利用timer实现的倒计时
    文件分析IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库
    安全业务第四部分 个人理财风险防范9.取款也要加小心
  • 原文地址:https://www.cnblogs.com/claricre/p/6237335.html
Copyright © 2020-2023  润新知