学习篇JAVA之接口和抽象类

做开发也有几年了,经常忙于完成开发任务,平时也没顾上熟悉JAVA基础。最近在读到设计模式时看到DEMO中有用abstract类,在我的印象当中应该都是使用interface啊,在此开始迷惑在编码设计中抽象类和接口的使用区别。今天又读了继承、抽象类、接口的概念,总算初步理解了它们之间的区别。

可以从以下几方面来对比分析:

1、设计

这个层面来讲都可以达到面向对象设计需求,目标都是能够抽象出类,一个有继承的概念,一个没有。也就是说abstract表示的is a 的关系,子类不可以继承多个父类,interface表示的是like a的关系,一个类可以实现多个接口类。

2、语法

abstract类的使用: 

1)抽象类可以有具体的方法、属性。

2)子类继承抽象类,单独的抽象类没有使用价值。

abstract class Person{...}

class Employee extends Person{...}

3)子类必须实现所有父类的抽象方法,不在是抽象类。

4)abstract类不能构建,必须由具体的子类继承抽象类,且子类不能有抽象方法。

Person p = new Employee();变量p总是引用一个具体类的对象。

Person p = new Person();这个错误的

interface类的使用:

1)接口类大多数描述的是一种规范、契约。

2)具体实现类可以实现多个接口类,这是抽象类所不具备的。

3)接口类只可以在类中定义不可变的静态属性和声明方法。

4)接口类同样也不可以单独使用,需要具体类去实现接口类的方法。

稍后补齐

最后个人觉得abstract和interface类在一定程度上可以混淆使用,但推荐使用接口去分析问题,解决问题。

以上是自己的理解,有不到位的欢迎指正!

你可能感兴趣的:(java,JAVA)