接口

接口 interface
修饰符    interface 接口名{
    常量
    抽象方法
}
修饰符:默认|public
接口名:自定义,规则与类名相同,一般I字母打头:wifi接口(IWifi)
示例:
    public interface IWifi{
        int COUNT=1;
        public abstract void send1();
        void receive1();
    }
属性:
    所有属性都必须赋初始值,默认都有是public static final类型的修饰符
    所有方法都是抽象的,默认都是public abstract类型的修饰符
 
java特点之一:单一继承,但实现多个接口
类如何实现接口:
    示例:
    public class Mobile implements IWifi{
        public void send1(){
            System.out.println("用wifi发送信息");
        }
        public void receive1(){
            System.out.println("用wifi接收信息");
        }
        public void send(){
            System.out.println("用手机发短");
        }
    }
注意:
    1.类如果没有实现全部的抽象方法,这个类必须定义为抽象类implements关键字
    2.接口可以被子接口继承,使用extends关键字
    3.一类可以继承一个父类,实现多个接口
    4.接口不能实例化对象,但接口类型变量可以引用实现的子类对象
示例:
    public interface IUSB2{
        public abstract void send2();
        public void receive2();
    }
 
    public interface IUSB3 extends IUSB2{
        public abstract void connection(IUSB3 usb);       
    }
示例:继承一个父类,实现多个接口
public class Computer{
    public void downLoad(){}
    public void upLoad(){}
    ...
}
public class Dell_Computer extends Computer implements IWifi,IUSB3{
    public  void connection(IUSB3 ortherUsb){
        System.out.println("this<-->ortherUsb");
        System.out.println("连接USB3.0设置");
    }
    public  void send1(){
        System.out.println("用wifi发送信息");
    }
    public void receive1(){
        System.out.println("用wifi接收信息");
    }
    public  void send2(){
        System.out.println("用USB3.0发送信息");
    }
    public void receive2(){
        System.out.println("用USB3.0接收信息");
    }
}
 
示例:接口不能实例化对象,但接口类型变量可以引用实现的子类对象
IWifi wifi设备1 = new Mobile();
Mobile 手机= new Mobile();
    wifi设备1 可以访问的方法:send1()和receive1();
    手机       可以访问的方法:send1(),receive1(),send();
 
IWifi wifi设备2 = new Dell_Computer();
IUSB2 设备3 = new Dell_Computer();
IUSB3 设备4 = new Dell_Computer();
Computer 电脑 = new Dell_Computer();
Dell_Computer 笔记本 = new Dell_Computer();
 
    wifi设备2    可以访问的方法:send1()和receive1();
    设备3        可以访问的方法:send2()和receive2();
    设备4        可以访问的方法:send2(),receive2()和connection(参数);
    电脑        可以访问的方法:downLoad()和upLoad();
    笔记本        可以访问的方法:send1(),receive1(),send2(),receive2(),connection(参数),downLoad()和upLoad();
 
 
抽象类和接口的区别
    共同点与区别:
        1.继承的层次结构都是上层
        2.都不能实例化对象
        3.接口所有方法都是抽象,变量都是public static final类型
            抽象类可以有抽象方法和常量
        4.抽象类只能作为唯一的父类,接口可以实现多个也可以被继承
        5.抽象类由abstract class定义,接口由interface定义
        6.父类与子类是"is a"的关系,父类是抽象类
            父类与子类是"like a"的关系,父类是接口
 
 
 

 
public interface IComparter<T>{
    /*
    比较t1与t2大小的,
    t1>t2返回正数
    t1<t2返回负数
    t1==t2返回0   
    */
    public abstract int compareto(T t1, T t2);
}
 
public class Student implements IComparter<Student>{
    int stuid;
    String stuName;
    double grade;
 
    public int compareto(Student t1, Student t2){
        if(t1.stuid>t2.stuid)
            return 1;
        else if(t1.stuid<t2.stuid)
            return -1;
        else
            return 0;
    }
 
    public int getStuid(){
        return this.stuid;
    }
    public String getStuName(){
        return this.stuName;
    }
    public double getGrade(){
        return this.grade;
    }
    public void setStuid(int stuid){
        this.stuid = stuid;
    }
    public void setStuName(String stuName){
        this.stuName = stuName;
    }
    public void setGrade(double grade){
        this.grade =grade;
    }
 
 
}
 
原文地址:https://www.cnblogs.com/zachary7/p/8191477.html