一、接口概述
abstract class抽象类修饰符
interface接口的修饰符
extends只能是一个
implements可以多个
接口只有一个抽象方法, 它比抽象类还要抽象,接口是彻彻底底的抽象!
接口是抽象方法和常量的属性集合。
接口中只能包含抽象方法和常量,不能够有变量、初始化块,构造器。
注意事项:
1、接口中的修饰符只有两种:默认和public
2、接口中的变量会被设置成共有的、静态的、最终的字段
int i=1; public static final int i=1;
二、接口的实现
class 类名 implement 接口1,接口2,接口3{ 方法1(){ } 方法2(){ } ...... }
接口实现的注意事项:
1、为接口中所有的方法提供具体实现。
2、必须遵守重写的所有规则。
3、重写的规则:子类的重写方法不能抛出更大的异常、子类重写方法不能有更小的反问范围
4、保持相同的返回类型
public interface Student { int classs=1201; void learn(); void eat(); void sleep(); }
public class Student1 implements Student{ @Override public void learn() { // TODO Auto-generated method stub System.out.println("学生在学习"); } @Override public void eat() { // TODO Auto-generated method stub System.out.println("学生在吃饭"); } @Override public void sleep() { // TODO Auto-generated method stub System.out.println("学生在睡觉"); } }
public class Test { public static void main(String[] args) { Student1 stu=new Student1(); stu.learn(); stu.eat(); stu.sleep(); System.out.println(Student.classs); } }
多继承也就是继承多个接口
1、这些接口之间需要几个逗号来分割开
2、如果这几个接口都有相同的方法和相同的变量名,那么相同的变量可以通过接口名.变量名的形式来访问,相同的方法将被其中的一个接口使用。
三、接口的应用
1、方法的修饰符
接口中变量的修饰符:public static final
接口中方法的修饰符: public abstract
2、接口类型引用变量
package day5; public class MathTest { public static void main(String[] args) { // TODO Auto-generated method stub MTest mt=new MTest(); System.out.println("使用引用对象调用方法"); System.out.println("a+b="+mt.add(15,3)); System.out.println("a-b="+mt.sub(15,3)); System.out.println("a*b="+mt.cheng(15,3)); System.out.println("a/b="+mt.chu(15,3)); Add add=mt; Sub sub=mt; Cheng cheng=mt; Chu chu=mt; System.out.println("使用接口类型调用方法"); System.out.println("a+b="+add.add(15,3)); System.out.println("a-b="+sub.sub(15,3)); System.out.println("a*b="+cheng.cheng(15,3)); System.out.println("a/b="+chu.chu(15,3)); } interface Add{ int add(int a,int b); } interface Sub{ int sub(int a,int b); } interface Cheng{ int cheng(int a,int b); } interface Chu{ int chu(int a,int b); } }
package day5; import day5.MathTest.Add; import day5.MathTest.Cheng; import day5.MathTest.Chu; import day5.MathTest.Sub; public class MTest implements Add,Sub,Cheng,Chu { @Override public int chu(int a, int b) { // TODO Auto-generated method stub return a/b; } @Override public int cheng(int a, int b) { // TODO Auto-generated method stub return a*b; } @Override public int sub(int a, int b) { // TODO Auto-generated method stub return a-b; } @Override public int add(int a, int b) { // TODO Auto-generated method stub return a+b; } }