1.1. 抽象方法和抽象类(掌握)
需求:求圆(Circle)和矩形(Rectangle)两种图形的面积。
分析:无论是圆形还是矩形,还是其他形状的图形,只要是图形,都有面积,也就说图形都有求面积的功能,那么我们就可以把定义一个图形(Graph)的父类,该类拥有求面积的方法,但是作为图形的概念,而并不是某种具体的图形,那么怎么求面积是不清楚的,姑且先让求面积的getArea方法返回0。
父类代码:
子类代码(圆形):
子类代码(矩形):
测试代码:
运行结果如下:
圆的面积:314.0
矩形的面积:20.0
1.1.1. 引出抽象方法(了解)
问题1:既然不同的图形求面积的算法是不同的,所以必须要求每一个图形子类去覆盖getArea方法,如果没有覆盖,应该以语法报错的形式做提示。
问题2:在Graph类中的getArea方法的方法体没有任何存在意义,因为不同图形求面积算法不一样,子类必须要覆盖getArea方法。
要满足上述对方法的要求,就得使用abstract来修饰方法,被abstract修饰的方法具备两个特征:
n 该方法没有方法体
n 要求子类必须覆盖该方法
这种方法,我们就称之为抽象方法。
1.1.2. 抽象方法和抽象类(重点掌握)
使用abstract修饰的方法,称为抽象方法。
public abstract 返回类型 方法名(参数);
特点:
n 使用abstract修饰,没有方法体,留给子类去覆盖
n 抽象方法必须定义在抽象类或接口中
使用abstract修饰的类,成为抽象类。
public abstract class 类名{
}
一般的,抽象类以Abstract作为类名前缀,如AbstractGraph,一看就能看出是抽象类。
特点:
n 抽象类不能创建对象,调用没有方法体的抽象方法没有任何意义
n 抽象类中可以同时拥有抽象方法和普通方法
n 抽象类要有子类才有意义,子类必须覆盖父类的抽象方法,否则子类也得作为抽象类
父类代码:
public abstract class AbstractGraph {
public abstract double getArea();//没有方法体
}
子类代码:
测试类没有改变。
本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。
本文暂时没有评论,来添加一个吧(●'◡'●)