太仓住房与城乡建设部网站网站优化推广的方法
目录
(1)接口的基本介绍编辑
(2)接口的注意事项和细节
1.接口不能被实例化
2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰
3.一个普通类实现接口,必须将接口所有的抽象方法都实现。
4.抽象类实现接口,可以不用实现接口的方法
5.一个类同时可以实现多个接口
6.接口中的属性,只能是final,而且是public static final修饰符
7.一个接口不能继承其他的类,但是可以继承多个别的接口。
(3)接口和继承的区别
(4)接口的多态性
(1)接口的基本介绍
在接口类中可以有三种方法,分别为抽象、默认、静态,举例如下:
interface example{abstract int a();//抽象方法,如果没有写abstract,则其也会默认为abstract。default void b(){//默认方法};public static void c(){//静态方法}
}
而在实现类中,除了必须要实现的抽象类,还可以有自己的属性和方法。举例如下:
interface example{abstract int a();//抽象方法,如果没有写abstract,则其也会默认为abstract。default void b(){//默认方法};public static void c(){//静态方法}
}
class iA implements example{int number=10;//自己的成员属性public void b(){//自己的成员方法System.out.println("这是在函数b");}public int a() {//实现抽象方法return 0;}
}
(2)接口的注意事项和细节
1.接口不能被实例化
interface example{}public class Main {public static void main(String[] args) {example example = new example();//接口不能被实例化}
}
2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰
interface example{void a();//默认为abstract
}
3.一个普通类实现接口,必须将接口所有的抽象方法都实现。
4.抽象类实现接口,可以不用实现接口的方法
interface example{void a();//默认为abstract}
abstract class iB implements example{//如果是一个抽象类实现接口,则可以不去实现接口的方法}
5.一个类同时可以实现多个接口
interface example{
}
interface example2{}
abstract class iB implements example,example2{//一个类同时可以实现多个接口 }
6.接口中的属性,只能是final,而且是public static final修饰符
interface example{int a=10;//默认为public static final int a=10
}
public class Main {public static void main(String[] args) {System.out.println(example.a);}
}
7.一个接口不能继承其他的类,但是可以继承多个别的接口。
interface a{}
class b{}
interface c extends a{//这是正确的,接口可以继承其他的接口}
interface d extends b{//这是错误的,接口不能继承其他的普通类}
(3)接口和继承的区别
很多人这时候觉得接口没有比继承比nb多少嘛,不就多个抽象方法嘛。假如有三个人,他们分别会编程、弹钢琴、健身,有一个儿子想拜干爹想学习他们的技能。如果用继承关系,是is-a的关系,这个人只能继承一个类,也就是学习一种技能。如果用继承同时实现三种则会报错,如下图。
用接口则可以实现一个类去实现多个接口的方法,他们的关系是like-a。
(4)接口的多态性
用生活中的一个实际例子,假如我们有手机、相机、电脑,我们想把手机和相机接入到电脑上,要怎么样接入呢?在现实我们知道用电脑上有usb接口直接插上就行。在编程中,我们首先则要一个接口定义usb规格,然后在手机和相机类去实现这个接口,最后在电脑中定义一个可以调用接口的方法。
interface usbinterface{//一个接口void use();
}
class phone implements usbinterface{//手机实现接口@Overridepublic void use() {System.out.println("手机接入");}
}
class camera implements usbinterface{//电脑实现接口@Overridepublic void use() {System.out.println("相机接入");}
}
class comperter{public void work(usbinterface usbinterface1){//定义可以调用接口的方法usbinterface1.use();}
}
public class Main {public static void main(String[] args) {comperter comperter = new comperter();phone phone = new phone();camera camera = new camera();comperter.work(phone);//体现了多态性System.out.println("====================");comperter.work(camera);//体现了多态性}
}
接口多态数组的体现
interface usbinterface{//一个接口void use();
}
class phone implements usbinterface{//手机实现接口@Overridepublic void use() {System.out.println("手机接入");}public void call(){//手机的功能System.out.println("可以打电话");}
}
class camera implements usbinterface{//电脑实现接口@Overridepublic void use() {System.out.println("相机接入");}public void picture(){//相机的功能System.out.println("可以照相");}
}
class comperter{public void work(usbinterface usbinterface1){//定义可以调用接口的方法usbinterface1.use();}
}
public class Main {public static void main(String[] args) {comperter comperter = new comperter();usbinterface []usbinterfaces = new usbinterface[2];usbinterfaces[0]=new phone();//体现了多态性usbinterfaces[1]=new camera();//体现了多态性if(usbinterfaces[0] instanceof phone){//如果运行类型为phone类则向下转型调用手机的方法((phone) usbinterfaces[0]).call();}if(usbinterfaces[1] instanceof camera){((camera)usbinterfaces[1]).picture();//如果运行类型为camera类则向下转型调用手机的方法}}
}