Java中interface接口与abstractclass抽象类的区别interface和abstractclass是Java中实现多态的基础都很有用都很有用但也有一些区别 interface被继承时用的关键字是implements而且可以同时implements多个
Java中interface接口与abstractclass抽象类的区别interface和abstractclass是Java中实现多态的基础都很有用都很有用但也有一些区别 interface被继承时用的关键字是implements而且可以同时implements多个interface而abstract class被继承时用的关键字是extends而且只能同时extends一个abstract class。 interface内定义的方法都是public的而abstract class内的则不一定。 interface内定义的成员对象都是static 而abstract class不是 interface的方法不能有默认实现只有一个申明而abstract class内申明abstract的方法不能有实现非申明abstract的方法可以有默认实现。 interface被implements时所有方法都必须被实现必须申明是public的而abstract class被extends时只有abstract的方法才必须被实现别的有默认实现的直接被继承过来。 例子 public interface Instrument { int i 5; //static t have method definitions: void play(); //automatically public void adjust(); } public abstract class AbstractCachedTable { public Hashtable table new Hashtable(); abstract public void refresh(); public Object get(Object o) { Object target null; target table.get(o); return target; } } 一般情况下建议使用interface因为能同时implements多个interface的特性能更好地实现多态当需要有默认实现和成员对象时才考虑abstract class。 摘自http://guixian.iteye.com/blog/185763
转载于:https://blog.51cto.com/2197042/1157083