1.接口和抽象函数不可以直接实例化,即不能Key pKey = new Key();只能用子类去实例化,并且具有子类和父类共同代码的功能,实现多态。
2.接口的类型转换,实例的向上转换和向下转换。例子中,getBuildKey函数返回类型是父接口,之后强制转换成子接口类型,那样就可以用子接口的声明调用不同的实现,且子接口相比父接口可以有更多的功能。
3将不同的实现都用父接口保存,在使用的时候可以方便的用类型转换的方法转换到相应的接口上去,使用起来比较方便。
class TestDuoTai
{
public static void main(String[] args)
{
ECC pKey;
pKey = (ECC)getBuildKey();
pKey.fun1();
pKey.fun2();
}
public static Key getBuildKey()
{
return new SM3();
}
}
interface Key
{
void fun1();
void fun2();
}
interface ECC extends Key
{
void fun1();
void fun2();
}
class RSA implements ECC
{
public void fun1()
{
System.out.println("fun1.RSA");
}
public void fun2()
{
System.out.println("fun2.RSA");
}
}
class SM2 extends RSA
{
public void fun1()
{
System.out.println("fun1.SM2");
}
public void fun2()
{
System.out.println("fun2.SM2");
}
}
class SM3 extends SM2
{
public void fun1()
{
System.out.println("fun1.SM3");
}
public void fun2()
{
System.out.println("fun2.SM3");
}
}
}
运行结果:fun1.SM3
fun2.SM3