抽象类和接口的联系与区别

来源:互联网 发布:双色球算法必中6减2 编辑:程序博客网 时间:2024/05/13 07:08

说起来惭愧,前几天突然被这个问题难住了,自己还是没有完全地理解,不能够回答地全面,今晚想起来就把它记下来吧。

1.理解抽象类。

  为什么使用抽象类?为更好地实现继承与多态,起到承上启下的作用。将事物共同的东西提取出来,抽象出一个更高层的类,这样更利于代码的复用。

  抽象类是使用访问修饰符abstract修饰的类。抽象类中有多个抽象方法,也可以有非抽象的方法。相反,有抽象方法的类一定是抽象类。抽象方法的特点是没有方法体。

  抽象类是不能被实例化的。例如:父类Animal拥有Dog和Cat两个子类,代码Animal animal = new Animal("仔仔");  animal.eat();这样是无意义的,因为你不知道具体的对象谁,是Dog还是Cat并不能确定,所以实例化是无意义的,JAVA中使用抽象类来限制实例化。

 父类中的抽象方法必须要被继承的子类实现,除非子类也是抽象方法。

2.理解接口。

  接口可以理解是一种能力。只需要声明能力是什么,具体怎么做并不需要声明。也就是说,接口中的方法也是抽象方法,也就是!接口是一种纯抽象类。

  创建接口使用interface关键字,实现接口则使用implements关键字。

  同抽象类一样,接口不能被实例化,实现类必须要实现接口中所有的方法。

  但是,接口还有自己的特点。

  接口中无构造方法。而抽象类是可以有构造方法的,抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。

  实现类可以实现多个接口,这也是我们经常使用接口的重要原因。

  接口中的变量都是全局静态的常量,方法也是全局抽象方法。

  使用接口更利于代码的维护,更自然地使用多态,更容易地搭建程序框架。

 


原创粉丝点击