以下是我对接口的理解,希望可以帮助你更深的理解接口和运用接口:
基本介绍:接口就是给出一些没有实现的方法,到某个类型要使用的时候,再使用这些方法,接口中的方法为抽象方法(如果对抽象方法不太理解的话,可以看抽象类分析的那一节),在jdk8.0后接口可以有静态方法,默认方法
语法:
package Test;
public interface IE {
//属性名
//抽象放法
}
class IC implements IE{
//自己属性
//自己方法
//必须实现接口方法
}
接口的多态特性:
1.多态参数
举例:
package Test;
public class Test5 {
public static void main(String[] args) {
kk kk = new kk();
uu uu = new uu();
Ts ts = new Ts();
ts.td(kk);
ts.td(uu);
}
}
interface hh{
void pT();
}
class kk implements hh{
@Override
public void pT() {
System.out.println("kk实现接口");
}
}
class uu implements hh{
@Override
public void pT() {
System.out.println("uu实现接口");
}
}
class Ts{
public void td(hh s) {
s.pT();
}
}
2.多态数组
举例:
package Test;
public class Test5 {
public static void main(String[] args) {
kk kk = new kk();
uu uu = new uu();
Ts ts = new Ts();
hh[] hhp = new hh[2];
hhp[0]=kk;
hhp[1]=uu;
for (int i = 0; i < hhp.length; i++) {
hhp[i].pT();
}
}
}
interface hh{
void pT();
}
class kk implements hh{
@Override
public void pT() {
System.out.println("kk实现接口");
}
}
class uu implements hh{
@Override
public void pT() {
System.out.println("uu实现接口");
}
}
class Ts{
public void td(hh s) {
s.pT();
}
}
3.多态传递现象
注意事项和细节:
1.接口不能被实例化(接口属于抽象类,根据抽象类可以解释为什么接口不能被实例化)
2.接口中所有的方法是public方法,并且接口中抽象方法可以不用abstract修饰
3.如果一个类实现接口,必须把该接口的所有接口都实现
4.抽象类实现接口可以不用实现接口的方法(因为接口本身就是抽象类)
5.一个类可以实现多个接口
举例:
package Test;
public class Test5 {
public static void main(String[] args) {
}
}
interface hh{ }
interface nn{}
class mm implements hh,nn{}
6.接口中的属性是被 public static final 修饰的(如果对final不太理解可以跳转final关键字)
7.接口中的访问形式:接口.属性名 (因为接口中的属性是静态的,不用new一个对象就可以使用)
8.接口不能继承其他类,但是可以继承多个接口
9.接口中类的修饰符只能是public 和默认的,和普通类的修饰符一样
对实例化接口和继承类做一个比较:
1.继承的价值在于解决代码的复用性和维护性吗,接口的价值在于设计好各中方法,让其他类进行使用
2.接口比继承更加的灵活
3.接口在一定程度上实现了代码的解耦(接口规范性+动态绑定机制)