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中类(包括抽象类)不允许多继承,而接口却允许多继承。


原文地址:https://www.cnblogs.com/yzy-blogs/p/6597339.html