接口的含义
在Java语言中,接口有两种意思:一是指概念性的接口,即指类对外提供的所有服务。类的所有能被其他程序访问的方法构成了类的接口。二是指用interface关键字定义的实实在在的接口,也称为接口类型。它用于明确地描述系统对外提供的所有服务,它能够更加清晰地把系统的实现细节与接口分离。
接口的声明
接口类型,它与抽象类表面.上有些相似,接口类型与抽象类都不能被实例化。类实现接口的关键字为implements。
接口的语法规则
接口中的成员变量默认都是public、static、final类型的,必须被显式初始化。并且接口中只能包含public、static、final类型的成员变量。
public interface A{
int v1; //编译出错,v1变量被看作静态常量,必须被显式初始化
protected int v2=0; //编译出错,v2变量必须是public类型
int v3=3; //合法,v3变量默认为public、static、final类型,此处public可不用写
}
允许在接口中定义抽象方法,默认方法和静态方法。默认方法用default关键字来声明,拥有默认的实现。接口中的方法默认是public类型的,并且必须是public类型的。接口之间也可以继承一个类只能继承一个直接的父类,但能实现多个接口。
比较抽象类与接口
共同点:都不能被实例化都可以包含抽象方法,以及包含具体实现的方法在语义上,都位于系统的抽象层,需要其他类来进一步提供实现细节。区别:接口中的成员变量和方法只能是public类型的,而抽象类中的成员变量和方法可以处于各种访问级别。抽象类比接口包含了更多的实现细节接口中的成员变量只能是public、static和final类型的,而在抽象类中可以定义各种类型的实例变量和静态变量。一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口。在语义上,接口表示更高层次的抽象,声明系统对外提供的服务。而抽象类则是各种具体类型的抽象。
instanceof操作符
instanceof操作符用于判断一个引用类型所引用的对象是否是一个类的实例。instanceof操作符左边的操作元是一个引用类型,右边的操作元是一个类名或接口名。形式如下:
Fish fish=new Fish();
System.out.println(fish instanceof XXX); //XXX表示一个类名或接口名
广泛地讲,一个类的实例包括类本身的实例,以及所有直接或间接的子类的实例,因此当“XXX”是以下值时,instanceof表达式的值为true:Fish类。Fish类的直接或间接父类。Fish类实现的接口。
操作符“==”与对象的equals()方法
==
当操作符“==”两边都是引用类型变量时,这两个引用变量必须都引用同一个对象,结果才为true。
Food fish1=new Fish();
Food fish2=new Fish();
Food fish3=fish1;
System.out.println(fish1 ==fish2); //打印false
System.out.println(fish1==fish3); //打印true
equals()
equals()方法是在Object类中定义的方法,它的声明格式如下:publicbooleanequals(ObjectobObject类的equals()方法的比较规则为:当参数obj引用的对象与当前对象为同一个对象,就返回true,否则返回false:publicbooleanequals(Objectob{if(this==obreturntrue;elsereturnfalse;}
Food fish1=new Fish();
Food fish2=new Fish();
Food fish3=fish1;
System.out.println(fish1.equals(fish2)); //打印false
System.out.println(fish1.equals(fish3)); //打印true
文章为作者独立观点,不代表股票交易接口观点