定义接口实例:
interface A{ //定义一个接口
public static final String MESSAGE="HelloWorld"; //全局常量
public abstract void print(); //定义抽象方法
default public void otherprint(){ //定义可以带方法体的默认方法
System.out.println("默认方法");
}
}
*注意:接口中成员属性默认是public static final修饰,成员方法是public abstact修饰,所以上述定义可以简写
代码演示:
interface A{ //定义一个接口
String MESSAGE="HelloWorld"; //全局常量
void print(); //定义抽象方法
default void otherprint(){ //定义可以带方法体的默认方法
System.out.println("默认方法");
}
接口使用原则:
1.接口必须有子类,子类依靠implements关键字可以同时实现多个接口;
2.接口的子类(如果不是抽象类)必须实现接口之中的全部抽象方法;
3.接口可以利用对象多态性,利用子类实现对象的实例化
4.接口和普通的类一样,本身也有数据成员和方法,但数据成员一定要初始赋值,并且此值不能再有修改,定义的方法可以有抽象方法和默认方法,抽象方法abstact关键字可以省略,默认方法需要带上default关键字,默认方法可以带有方法体。
5.默认方法的调用和普通方法的调用一样
接口的作用——制定标准
如电脑可以和各个设备连接,提供统一的USB接口,其他设备只能通过USB接口和电脑相连
代码实现:
interface USB
{
public void work() ; // 拿到USB设备就表示要进行工作
}
class Print implements USB //实现类(接口类)
{ // 打印机实现了USB接口标准(对接口的方法实现)
public void work()
{
System.out.println("打印机用USB接口,连接,开始工作。") ;
}
}
class Flash implements USB //实现类(接口类)
{ // U盘实现了USB接口标准(对接口的方法实现)
public void work()
{
System.out.println("U盘使用USB接口,连接,开始工作。") ;
}
}
class Computer
{
public void plugin(USB usb) //plugin的意思是插件,参数为接收接口类
{
usb.work() ; // 按照固定的方式进行工作
}
}
public class InterfaceStandards { public static void main(String args[]) { Computer computer = new Computer() ; computer.plugin(new Print()) ; //实例化接口类, 在电脑上使用打印机 computer.plugin(new Flash()) ; //实例化接口类, 在电脑上使用U盘 }}
代码讲解:上述例子,就给我们展示了接口制定标准的作用,怎么指定的呢?看下面代码
class Computer
{
public void plugin(USB usb) //plugin的意思是插件,参数为接收接口类
{
usb.work() ; // 按照固定的方式进行工作
}
}
Computer类里面定义了一个方法plugin(),它的参数内写的是USB usb,即表示plugin()方法里,接收的是一个usb对象,而打印机和U盘对象可以通过向上转型当参数,传入方法里
上述例子,就给我们展示了接口制定标准的作用,怎么指定的呢?看下面代码
class Computer
{
public void plugin(USB usb) //plugin的意思是插件,参数为接收接口类
{
usb.work() ; // 按照固定的方式进行工作
}
}
我们可以看到,Computer类里面定义了一个方法plugin(),
它的参数内写的是USB usb,即表示plugin()方法里,
接收的是一个usb对象,而打印机和U盘对象可以通过向上转型当参数
传入方法里
————————————————
制定标准作用的应用
public class InterfaceStandards
{
public static void main(String args[])
{
Computer computer = new Computer() ;
USB usb = new Print();
computer.plugin(usb) ; //实例化接口类, 在电脑上使用打印机
usb = new Flash();
computer.plugin(usb) ; //实例化接口类, 在电脑上使用U盘
}
}
我们修改了主函数后,发现,使用了两次的向上转型给了USB,虽然使用的都是usb对象,但赋值的子类对象不一样,实现的方法体也不同,这就很像现实生活,无论我使用的是打印机,还是U盘,我都是通过USB接口和电脑连接的,这就是接口的作用之一——制定标准