详解java interface 接口

一、接口的含义

java中接口有两种含义:
(1)类的所有能被其他程序访问的方法构成类的接口
(2)interface定义的接口类型

二、接口的声明

接口类型和抽象类类似,都不能被实例化,接口内的方法默认为抽象方法,没有方法体

public interface xxx{
	public void work();//默认为抽象方法
} 

用implements来访问接口,类中需要为接口中所有的抽象方法编写方法体,否则该类是抽象类

public class x implements xxx{
	public void work(){
		//...
	}
}

三、接口要点

1、接口中的变量

接口中所有变量都是public static final的,所有变量都必须被显式初始化

public interface xxx{
	int a1;//编译出错,必须显式初始化
	protected a2=0;//编译出错,a2必须是public static final类型
	int a3=1;//编译成功
}

2、接口中的默认方法和静态方法

允许在接口中用default定义默认方法,static定义静态方法,有方法体

public interface xxx{
	default void method1(){//声明默认方法
		System.out.println("default method1");
	}
	static void method2(){//声明静态方法
		System.out.println("static method2");
	}
	void method3();//声明抽象方法
}

外部实例化调用默认方法和抽象方法,直接通过接口调用静态方法

public class x implements xxx{
	public void method3(){//编写xxx中method3抽象方法的方法体
		//...
	}
	public static void main(String[] args){
		x a=new x();
		x.method2();//直接调用静态方法
		a.method1();//通过实例调用默认方法
		a.method3();//通过实例调用抽象方法
	}
}

3、接口中的方法

接口中的方法默认都是public类型的,并且必须是public类型的

4、接口的继承

接口也可以继承别的接口

interface base{
	void method1();
} 
interface sub extends base{//sub接口将继承base中的method1方法
	void method2();
}

5、多接口

一个类可以实现多个接口,但是只能继承一个抽象类

public class x implements a,b,c{
	//...	
}

6、引用变量

允许将一个引用变量声明为接口类型,而实际上引用实现接口的类的实例

7、类的实现

类在实现接口的抽象方法时,必须用显式地使用public修饰符,因为接口的抽象方法的访问限制默认为public,不显式将被认为是缩小了接口中定义的方法的访问权限。

三、instanceof

判断一个引用类型所引用的对象是否是一个类的实例,这里的类可以是父类也可以是接口

引用变量 instanceof 类名或者接口名

类名或接口名是以下三者时表达式返回true
(1)引用变量的类
(2)引用变量类的直接或间接父类
(3)引用变量类实现的接口

四、‘==’和equals()方法

a==b;
a.equals(b);

只有当a和b所指向的是同一个实例时这两个表达式才返回true

JDK中有些类覆盖了object的equals方法,如String,会判断内容相不相同而不是所指代的实例相不相同

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值