接口
接口 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; } }