1.接口概念java
接口能够理解为一种特殊的类,有全局常量和公共的抽象方法所组成。ide
若是说类是一种具体的实现体,而接口定义了某些类所必须遵照的规范,接口不关心这些类的内部数据,也不关心这些类方法的实现细节,只规定这些类里必须提供接口所定义的方法。(这与抽象类很像)测试
2.接口语法spa
[修饰符] interface 接口名 [extends 父接口1,父接口2]code
{对象
零到多个常量定义...继承
零到多个抽象方法的定义...接口
}input
注:接口是用来被继承、被实现的,修饰符通常用public ,也能够不加修饰符,但不能使用private和protected修饰接口;编译
接口与抽象类类似,全部接口其实有ababstract关键字,只是系统帮咱们省略了,写了也不报错;
接口能够继承多个父接口,也能够不继承。
3.使用接口
实现接口使用implements关键字(而实现父类使用extends),Java中一个类只能继承一个父类,不够灵活,能够经过实现多个接口作补充。
4.继承父类实现接口的语法
[修饰符] class 类名 extends 父类 implements 接口1,接口2...
{
类体部分
}
举例以下(仔细看测试类中接口的实现方法):
父类
package Java2_4_Practice; /** * 现有Shape图形类,用Circle圆形子类,求图形周长和面积 * @author qiang * */ public abstract class Shape { public abstract void perimeter(); //抽象定义计算周长的方法 public abstract void area(); //抽象定义计算面积的方法 }
接口类
package Java2_4_Practice; public interface IMaxArea { public void maxArea(); }
子类(继承父类并实现接口)
package Java2_4_Practice; /** * 现有Shape图形类,用Circle圆形子类,求图形周长和面积 * @author qiang * */ import java.util.Scanner; public class Circle extends Shape implements IMaxArea { @Override public void perimeter() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("请输入圆形的半径:"); float a = input.nextFloat(); System.out.println("圆的周长为:"+(a*2*Math.PI)); } @Override public void area() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("请输入圆形的半径:"); float a = input.nextFloat(); System.out.println("圆的面积为:"+(a*a*Math.PI)); } @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("图形周长相等时,圆形的面积最大!"); } }
测试类(仔细看其中接口的实现方法)
package Java2_4_Practice; /** * 现有Shape图形类,用Circle圆形子类,求图形周长,再使用接口 * @author qiang * */ public class Test2 { public static void main(String[] args) { Shape shape1 = new Circle();//抽象类父类引用子类 shape1.perimeter(); //使用接口与抽象类是相相似的,用一个接口的引用指向一个实现了接口的对象 IMaxArea im1 = new Circle(); im1.maxArea(); /* * 实现接口还能够有以下两种方法,其中的接口方法自行编译 */ //方法1:接口引用指向new一个新接口,而后编译方法,再用new的接口调用方法 IMaxArea im2 = new IMaxArea(){ @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("1使用匿名内部类的方式实现接口"); } }; im2.maxArea(); //方法2:直接new一个接口,而后编译方法,最后花括号加.调用方法 new IMaxArea() { @Override public void maxArea() { // TODO Auto-generated method stub System.out.println("2使用匿名内部类的方式实现接口"); } }.maxArea(); } }
运行结果:
请输入圆形的半径: 3 圆的周长为:18.84955592153876 图形周长相等时,圆形的面积最大! 1使用匿名内部类的方式实现接口 2使用匿名内部类的方式实现接口