java中接⼝(interface)及使⽤⽅法⽰例
1、接⼝:⼀种把类抽象的更彻底,接⼝⾥只能包含抽象⽅法的“特殊类”。接⼝不关⼼类的内部状态数据,定义的是⼀批类所遵守的规范。(它只规定这批类⾥必须提供某些⽅法,提供这些⽅法就可以满⾜实际要求)。
在JAVA编程语⾔中是⼀个抽象类型,是抽象⽅法的集合,接⼝通常以interface来声明。⼀个类通过继承接⼝的⽅式,从⽽来继承接⼝的抽象⽅法。
接⼝并不是类,编写接⼝的⽅式和类很相似,但是它们属于不同的概念。类描述对象的属性和⽅法。接⼝则包含类要实现的⽅法。
除⾮实现接⼝的类是抽象类,否则该类要定义接⼝中的所有⽅法。
接⼝⽆法被实例化,但是可以被实现。⼀个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类。另外,在Java中,接⼝类型可⽤来声明⼀个变量,他们可以成为⼀个空指针,或是被绑定在⼀个以此接⼝实现的对象。
定义:【修饰符】interface接⼝名extends⽗接⼝1,赋接⼝2,.......//不⽤extends⽗接⼝1...就是定义接⼝
{
//零到多个常量定义......
//零到多个抽象实例⽅法定义.....
}
【语法说明】:1、修饰符可以是public或者省略,如果省略public访问控制符,则是包访问权限。
2、接⼝⾥所有的成员都是public修饰,因为接⼝是公共的,所有类都能访问的。接⼝⾥属性默认的修饰为:publicstaticfinal,不管属性前⾯写没写都会默认加上,同样⽅法的默认修饰为:publicabstract,内部类:publicstatic。都会默认加上。
3、成员⾥⾯不能有构造器,不能有初始化块。
4、⼀个java源⽂件⾥最多只能定义⼀个接⼝,因为其是public修饰的,存储的名字必须和public修饰的类的名字⼀样,⽽接⼝可以看成⼀个特殊的类。
2、接⼝的继承:⼀个接⼝可以有多个直接⽗接⼝,接⼝只能继承接⼝,不能继承类。
【注意点】:a、⼦接⼝继承⽗接⼝,将会获得⽗接⼝⾥定义的所有抽象⽅法,常量属性,内部类等定义。
3、接⼝的使⽤:语法:【修饰符】class类名extends⽗类implements接⼝1,接⼝2......{类体}。
【注意事项】
a、说明:⼀个类可以同时继承⼀个⽗类,和多个接⼝,只是extends必须放置implements之后。
b、接⼝不能创建实例,但是可以声明变量,但其⼀定是引⽤到了其实现类的对象。
c、主要⽤途就是被类实现。
d、实现的⽅法:利⽤implements关键字
e、⼀个类继承了⼀个接⼝之后,必须完全实现这些接⼝⾥所定义的全部抽象⽅法(也就是要在⼦类⾥⾯重写这些类⽅法),否则,如果没有完全实现,那么此类也只能定义成抽象类。
f、重写接⼝⽅法时,修饰符只能⽐⽗类更⼤,或者相等,所以其也必须是public修饰符。
g、所有接⼝类型的变量都可以直接赋给Object类型的变量。
贴上⽰例代码(引⽤于李刚的疯狂java):
//定义⼀个接⼝Output
interface Output
{
//接⼝⾥只能把属性定义成常量
int MAX_CACHE_LINE = 50;//主要是定义存储空间
//接⼝⾥定义的只能是public的抽象⽅法
void out();
void getData(String msg);
}
//定义⼀个接⼝Product
interface Product
{
int getProduceTime(int a);
}
//让printer类实现定义的接⼝
public class Printer implements Output,Product
{
private String [] printData = new String[MAX_CACHE_LINE];
private int dataNum =0;
public void out()//重写⽗接⼝Output的⽅法
{
while(dataNum>0)
{
System.out.println("打印机打印"+printData[0]);
System.arraycopy(printData,1,printData,0,--dataNum);
}
}
public void getData(String msg)//重写⽗接⼝Output的⽅法
{
if(dataNum>=MAX_CACHE_LINE)
{
System.out.println("已满");
}
else
{
printData[dataNum++] = msg;
}
}
public int getProduceTime(int a)//重写⽗接⼝Product的⽅法
{
return a = a;
}
public static void main(String[] args)
{
//⽗接⼝可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是Printer
Output O= new Printer();
O.out();//直接调⽤输出的⽅法
//⽗接⼝可声明变量,但是不能创建实例,多态:声明的是Output,但是创建的实例是Printer
Product p = new Printer();
java接口可以创建对象吗System.out.ProduceTime(82));
//所有接⼝类型的引⽤变量都可以直接赋值给Object类型的变量
Object obj = p;
Object obj1 = O;
}
}
4、抽象类和接⼝的异同:
相同:
1、都有抽象⽅法。
2、都不能创建实例。
3、⼦类继承其后都必须全部实现其内的抽象⽅法,如果没有全部实现的话,类只能定义成抽象类。不相同:
1、接⼝⾥只能有抽象⽅法,抽象类⾥可以有普通⽅法。
2、接⼝类⾥的属性默认有修饰语publicstaticfinal,但是抽象类中的属性可以是普通的。
3、接⼝没有初始化块,抽象类⾥有。
4、接⼝可以有多个⽗接⼝,但是抽象类只能有⼀个⽗类。
总结
以上就是本⽂关于java中接⼝(interface)及使⽤⽅法⽰例的全部内容,希望对⼤家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不⾜之处,欢迎留⾔指出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论