抽象类顾名思义是对类的进一步抽象,类是表述一类事物的属性,而抽象类则是对多个类的共同属性进行描述,例如动物类可以看成是狗、猫、鸟等类的抽象类。
抽象类与抽象方法的特点
抽象的关键字为abstract
抽象方法必须在抽象类中创建,当抽象类中可以包含普通类
抽象方法没有方法体
抽象类不能实例化
抽象类可以有构造方法
接口
接口与抽象类较为类似,都可以包含抽象方法,在idea中创建时可以选择interface类型直接创建,而不是像创建普通类一样选择class
接口的规则
接口的关键字是interface,实现接口的关键字是implements,接口之间可以用extends继承(与类与类之间继承类似)
接口不能被实例化,也没有构造方法,因为里边的方法全都是公共抽象方法
接口可以有静态方法(不建议使用)
接口中的变量全部都是公共静态常量,一般在工作中一个接口也已全是常量,没有方法
接口用于扩展功能,多个接口可以被一个接口继承,多个接口可以被一个类实现,
接口可以实现层与层之间的连接,多人共同编写项目时可以通过提前对接口的使用规范定义来实现代码间的流通使用
抽象类与接口的异同点
相同点:
都代表抽象层,都不能被实例化,都可以包含抽象方法,都可以实现多态
不同点:
接口不能有构造方法,接口不建议有静态方法
抽象类中可以有普通方法,而接口不可以,同时抽象类中的抽象方法也可以不是公共的
抽象类的目的是代码重用(被继承),接口的目的是功能扩展(被实现)和多方交互连接
一个类只能继承一个父类,但可以实现多个接口