抽象方法:是指由abstract修饰,只有方法的定义,没有具体的实现(没有{})。
抽象类:是指由abstract修饰,其中包含抽象方法的类必须是抽象类(不包含抽象方法的类也可以声明为抽象类)。
特点:抽象类不能被实例化,是需要被继承的;子类需要重写所有抽象方法,除非也声明为抽象类(不建议)。
意义:1)封装所有子类所共有的属性和行为-------代码复用
2)为所有子类提供了统一的类型-----------向上造型
3)可以包含抽象方法,为所有子类提供了统一的入口;子类的具体实现是不同的,但方法的定义是一致的
接口:是一个标准、规范,遵守该标准就能干某件事(API才理解),其是一种数据类型,由interface定义,只能包含常量和抽象方法。
特点:
1)接口不能被实例化
2)接口是需要被实现的,实现类,必须重写接口中的所有抽象方法
3)一个类可以实现多个接口,用逗号分隔,若又继承又实现时,应先继承后实现
4)接口可以继承接口
抽象类和接口的区别:
1)一个类只能继承一个抽象类,但可以实现多个接口
2)抽象类中可以包含抽象方法和非抽象方法,而接口中的所有方法均为抽象的。
3)子类继承抽象类必须实现抽象类中所有抽象方法,否则子类也必须是抽象类。而子类实现接口则必须实现接口中的所有抽象方法。
下面完成求一组图形中最大面积的案例:
下面测试一下代码:
最后输出结果为:
根据常识,也判断出程序没问题。