zoukankan      html  css  js  c++  java
  • 接口

    接口是一种能力

    关键字:interface

    语法:

    [修饰符] interface 接口名 extends 父接口1,父接口2.......{
           //常量定义
           //方法定义
    }
    
    class 类名 extends 父类名 implements 接口1,接口2.....{
          //类成员
    }

    接口的注意事项:

    1:接口的命名规则与类相同,如果是public,则该接口在整个项目中可见,如果省略修饰符,则该接口只能在当前类中可见

    2:接口中可以定义常量,不能定义变量,接口中的属性会自动用public static final 修饰,即接口中的属性都是全局静态常亮,接口中的常量必须在定义时指定初始值;

    3:接口中的所有方法都是抽象方法,接口中的方法都会用public abstract修饰,即接口中只有全局抽象方法

    4:和抽象类一样,接口也不能实例化,接口中不能有构造方法,

    5:接口不能实例化,因为接口是比抽象类抽象程度更高的类型 

    6:一个类如果实现了某个接口,必须重写该接口中的所有方法
    7:接口中的所有字段必须是公有的静态常量
    8:接口本身也是一种数据类型
    9:接口只是为实现它的类定义了规范,保证实现类方法签名和接口中对应方法一致。
    10:通过接口可以实现多继承
    11:一个借口中最好只定义一个方法,防止接口污染
     
    抽象类和接口的区别
    01.抽象类中可以有普通方法,接口中不能
    02.抽象类可以有构造,
    接口不能
    03.抽象类中可以有普通字段,而接口中不行
    04.抽象类不能实现多继承,接口可以

    注:接口内,所有方法都没有方法体

       接口的特性:
       接口不可以被实例化 常作为类型使用
       实现类必须实现接口的所有方法
       实现类可以实现多个接口
       接口中的变量都是静态常量 Java中的多继承

    示例代码:

    package cn.javaOppDay01;
    
    public abstract class Door {
    //开门方法
        public abstract void openDoor();
        //关门方法
        public abstract void closeDoor();
    }
    定义的Door类
    package cn.javaOppDay01;
    
    public class FDDoor extends Door implements Ilock,IRing {
    
    
        //响铃的方法
        public void ring(){
            System.out.println("门铃响了");
        }
        
        
    
        @Override
        //上锁的方法
        public void lockd() {
            System.out.println("门锁了");
        }
            
        
        @Override
        public void openDoor() {
            System.out.println("openDoor");
    
            
        }
        @Override
        public void closeDoor() {
            System.out.println("closeDoor");
        }
    
    
    
    }
    子类
    package cn.javaOppDay01;
    
    public interface Ilock {
    
        //在接口中所有的变量都是静态
        public int num=3;
        //在接口所有的方法都是抽象方法,没有方法体
        public void lockd();
        
    }
    接口 ILock
    package cn.javaOppDay01;
        //门铃接口
    public interface IRing {
    
        public void ring();
        
    }
    接口 IRing
    package cn.javaOppDay01;
    
    public class MyMain {
        public static void main(String[] args) {
            FDDoor door =new FDDoor();
            door.closeDoor();
            door.lockd();
            door.ring();
            door.openDoor();
        }
    }
    测试类

    总结:
       接口有比抽象类更好的特性:
     1.可以被多继承
     2.设计和实现完全分离
     3.更自然的使用多态
     4.更容易搭建程序框架
     5.更容易更换实现
     ...... 

     Java中的接口
     属性全都是全局静态常量
     方法都是全局抽象方法
     无构造方法
     一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法
     抽象类利于代码复用,接口利于代码维护

     
     
     
     

     
     
     
     
     
     
     

  • 相关阅读:
    (2015年郑州轻工业学院ACM校赛题) B迷宫
    (2015年郑州轻工业学院ACM校赛题) A 彩票
    POJ 1861 Network
    动态逆序对
    K大数查询
    Dynamic Rankings
    Cleaning
    Boxes
    P3601 签到题
    How many integers can you find
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8504490.html
Copyright © 2011-2022 走看看