• Java中的接口


    一、接口的定义

    如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用另外一种方式来定义,也就是接口定义。接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

    在Java中,定义一个接口的形式如下:

    [public] interface InterfaceName [extends SuperInterName]
    {
    .....//常量定义和抽象方法定义
    }
    接口中定义的属性必须是public static final变量,而定义的方法必须是public abstract方法,因此这些修饰符可以部分或者全部省略。

    二、接口的用法

    1、接口中定义的属性的值在实现类中不能被更改。

    /*
    	接口中定义的属性的值在实现类中不能被更改
    	接口的属性是public static final 类型
    */
    
    
    //接口中是不可以定义构造函数的
    interface It
    {
    	int i = 10;  //不能改为 int i;
    }
    
    class A implements It
    {
    	public A(int j)
    	{
    		//this.i = j;  // 接口It中的属性i 是public static final 类型,不可以在实现类中被改变
    	}
    }
    
    class TestInter_1
    {
    	public static void main(String[] args)
    	{
    		A aa = new A(10);
    		System.out.println("aa.i = " + aa.i);
    		System.out.println("aa.i = " + A.i);
    	}
    }

    2、一个类只能实现某个接口,不能继承某个接口。

    3、接口可以继承接口,而且可以继承多个接口,即接口允许多继承。

    4、如果一个类只实现了一个接口的部分方法,则该类必须声明为抽象类。因为如果一个类只是实现了接口的部分方法,而接口的其他方法还是抽象方法,所以这个类还一定包含抽象方法,因此要声明为抽象类。

    5、一个类要想实现某个接口中方法时,该方法必须声明为public。因为接口的方法都是public abstract类型的。

    6、一个类可以在继承一个父类的同时实现一个或多个接口,但extends关键字必须的在implements 之前。

    class A
    {
    }
    
    interface It1
    {
    }
    
    interface It2 {
    }
    
    //接口可以多重继承,即一个接口可以有多个父接口,但是一个类只能有一个父类,Java类不允许多继承,接口却允许多继承
    interface It3  extends It1, It2
    {
    }
    
    interface It4
    {
    	int i = 20;
    }
    
    //一个类可以在继承一个父类的同时实现一个或多个接口,但extends关键字必须的在implements 之前
    class T  extends A implements It4,It3
    {
    }
    
    
    class TestInter_2
    {
    	public static void main(String[] args)
    	{
    		System.out.println("嘿嘿!");
    	}
    }
    7、不可以new接口对象,但可以定义一个接口引用类型的变量并将其指向实现接口的对象,达到多态的目的。

    interface It
    {
    	void f();
    }
    
    class A implements It
    {
    	public void f()   //必须声明为public类型
    	{
    		System.out.printf("AAAAA
    ");
    	}
    }
    
    public class TestInter_1
    {
    	public static void main(String[] args)
    	{
    		//It it = new It();  //error
    		It it = new A();
    		it.f();              //实现多态
    	}
    }


    三、接口和抽象类的区别

    1、接口中的方法只能是抽象方法,而抽象类中可以有非抽象方法的方法成员。

    2、Java中类(包括抽象类)不允许多继承,而接口却允许多继承。


  • 相关阅读:
    联考20200801 T2 皮卡丘
    联考20200729 T2 划愤
    联考20200801 T1 林海的密码
    联考20200725 T2 Tree
    联考20200721 T1 s1mple
    联考20200730 T2 小B的环
    联考20200730 T1 小B的班级
    联考20200718 T1 因懒无名
    联考20200723 T1 数
    联考20200722 T1 集合划分
  • 原文地址:https://www.cnblogs.com/yzy-blogs/p/6597339.html
Copyright © 2020-2023  润新知