接口--制定标准

定义接口实例:

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接口和电脑连接的,这就是接口的作用之一——制定标准

在这里插入图片描述

对象的多态可以通过动态绑定来实现,即使用向上转型,我们知道类,数组,接口都是引用类型变量,引用类型变量都会有一个地址的概念,即指向性的概念,当USB usb = new Print(),此时usb对象是指向new Print()的,当usb = new Flash()后,这时候usb变量就会指向new Flash(),我们会说这是子类对象赋值给了父类对象usb,而在内存中,我们应该说,usb指向了new Flash();

猜你喜欢

转载自blog.csdn.net/weixin_45715131/article/details/122426990