程序员的知识教程库

网站首页 > 教程分享 正文

Java入门超经典教程-抽象类和抽象方法

henian88 2024-08-16 17:37:49 教程分享 8 ℃ 0 评论

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基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表