转载 - java中接口的向上转型。和多态性

发现一篇对接口总结很精简的文章

 

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).

如果覆盖了就调用子类的,没覆盖就调用基类的

 

原文链接:http://blog.sina.com.cn/s/blog_80769be70100vify.html

猜你喜欢

转载自www.cnblogs.com/sri023/p/9171922.html