Java中的接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的接口相关的知识,希望对你有一定的参考价值。

一.接口的定义

  Java中的接口是纯抽象类,可以规定方法的原型,即方法名、参数列表和返回类型,但是不需要定义方法的主体。

  Java中的接口是可以实现多继承的,其基本语法形式为:

[接口修饰符] interface 接口名称 [extends 父接口名]{
         //方法的原型声明或静态变量  
}

  其中:

1.接口中的数据成员必须要有初值且不能再更改,即定义为final类型,但可以省略final关键字。

2.接口中的方法 必须是抽象方法,不允许包含方发的实现,可以省略public和abstract关键字。

 

二.实现单接口

  接口的实现需要使用implements关键字,其基本语法如下:

public class 类名称 implements 接口名称 {
     //在类体中实现接口的方法
}

  其中:接口的实现类必须实现接口中所定义的所有方法,且来自接口的方法必须声明为public。

//声明一个接口Shape2D,包括PI和计算面积的方法原型
interface Shape2D{
	final double pi = 3.14;
	public abstract double area();//也可写作double area();
}

class Circle implements Shape2D{
	double radius;
	public Circle(double r){
		radius = r;
	}
	public double area(){
		return (pi*radius*radius);
	}
}

class Rectangle implements Shape2D{
	int width,height;
	public Rectangle(int w,int h){
		width = w;
		height = h;
	}
	public double area(){
		return(width*height);
	}
}

public class InterfaceTester{
	public static void main(String[] args){
		Rectangle rect = new Rectangle(5,6);
		System.out.println("Area of rect = " + rect.area());
		
		Circle cir = new Circle(2.0);
		System.out.println("Area of cir = " + cir.area());
		
		Shape2D var1,var2;//声明接口类型的变量,并用它来访问对象
		var1 = new Rectangle(5,6);
		System.out.println("Area of var1 = " + var1.area());
		
		var2 = new Circle(2.0);
        System.out.println("Area of var2 = " + var2.area());
	}
}

//运行结果
Area of rect = 30.0
Area of cir = 12.56
Area of var1 = 30.0
Area of var2 = 12.56

 

三.实现多接口的继承

  一个类可以实现多个接口,通过这种机制可以实现对设计的多重继承。其基本语法为:

[类修饰符] class 类名称 implements 接口1,接口2,...{
      //实现接口方法  
}

 例

interface Color{
	void setColor(String str);
}

class Circle implements Shape2D,Color{
	double radius;
	String color;
	public Circle(double r){
		radius = r;
	}
	public double area(){
		return (pi*radius*radius);
	}
	public void setColor(String str){
		color = str;
		System.out.println("color=" + color);
	}
}

public class MultiInterfaceTester{
	public static void main(String[] args){
		Circle cir;
		cir = new Circle(2.0);
		cir.setColor("blue");
		System.out.println("Area=" + cir.area());
	}
}

//输出结果
color=blue
Area=12.56

 

 

四.接口的扩展

  若一个接口继承了父接口,在类中实现接口方法时需要同时实现父接口中定义的方法。接口的继承是多继承,其基本语法为:

interface 子接口的名称 extends 超接口的名称1,超接口的名称2...{
         //定义方法名称及静态变量  
}

 

interface Shape{
	double pi = 3.14;
	void setColor(String str);
}

interface Shape2D extends Shape{
	double area();
}

class Circle implements Shape2D{
	double radius;
	String color;
	public Circle(double r){
		radius = r;
	}
	public double area(){
		return (pi*radius*radius);
	}
	public void setColor(String str){
		color = str;
		System.out.println("color=" + color);
	}
}

public class ExtendsInterfaceTester{
	public static void main(String[] args){
		Circle cir;
		cir = new Circle(2.0);
		cir.setColor("blue");
		System.out.println("Area=" + cir.area());
	}
}

  

 

  

以上是关于Java中的接口的主要内容,如果未能解决你的问题,请参考以下文章

LockSupport.java 中的 FIFO 互斥代码片段

(转) Java中的负数及基本类型的转型详解

Java Lambda

从父片段到选项卡片段的接口侦听器不起作用

java中封装,继承,多态,接口学习总结

如何使用接口在片段和活动之间进行通信?