发现一篇对接口总结很精简的文章
1.在java中接口就是一个完全抽象的类,跟抽象类一样不能产生对象,但是可以作为对象的引用,可以由其实现类向上转型,它就跟超类一样,
向上转型了,可以很好的利用接口,可以调用接口中的所有在实现接口类中的方法.而不能把引用指向,接口(或者超类)中没有的方法,
2.接口定义中默认的都是public abstract的方法
当实现接口的时候方法必须是public 并前要实现接口中出现的所有方法。
例如:
public interface A
{
void fun();//默认的就是public abstract;
void run();
}
//实现接口
public Animals implements A
{
public void fun(){};
public void run(){};//必须实现这两个方法,必须声明是public
public void sleep(){};//也可以写自己的方法,但是于接口无关,
}
public class C
{
static void funner(A an)//可以向上转型为A,只要是实现了A这个接口的类都可以转型
{
an.fun();
an.run();
//注意不能调用sleep();因为sleep()在接口中没有,不能向下转型,不能调用接口中没有的方法.
}
}
其实继承跟接口的这种向上关系差不多.
只是实现接口的类必须实现接口中所有的方法,而继承中的方法不会,只是会出现覆盖.
不覆盖,子类中没有,就会调用基类的!
字段是没有多态性的,static 和final同样也不具有多态性,.
多态的产生是后期绑定,根据后期绑定判定类型,
多态就是开始附加某种类型,通过后期绑定判断,
如果是继承里面就看子类是否覆盖了父类的方法(非static方法和非private).
如果覆盖了就调用子类的,没覆盖就调用基类的
原文链接:/s/blog_80769be70100vify.html