1.1.抽象方法和抽象类(硕士)
要求:求圆和矩形的面积。
解析:无论是圆形、矩形还是其他形状的图形,只要是图形,都有面积,也就是说图形有求面积的功能。然后我们可以定义一个图的父类,它有求面积的方法,但是作为图的概念,它不是一个具体的图,所以不清楚怎么求面积。我们先把求面积的getArea方法返回到0。
父类代码:
子类代码(圆圈):
子类代码(矩形):
测试代码:
运行结果如下:
圆的面积:314.0
矩形面积:20.0
1.1.1.导致抽象方法(理解)
问题1:由于寻找不同图形的面积的算法是不同的,所以必须要求每个图形子类覆盖getArea方法。如果没有覆盖,应该以语法错误的形式给出提示。
问题Graph类中getArea方法的方法体没有意义,因为不同的图有不同的求面积算法,子类必须重写getArea方法。
为了满足上述对方法的要求,你必须使用abstract来修改方法。通过抽象修改的方法有两个特点:
n此方法没有方法体。
n要求子类覆盖这个方法。
这种方法叫做抽象方法。
1.1.2.抽象方法和抽象类(焦点)
用abstract修饰的方法称为抽象方法。
Public abstract返回类型方法名(参数);
特点:
n用抽象修饰,没有方法体,留给子类去覆盖。
n抽象方法必须在抽象类或接口中定义
用abstract修饰的类成为抽象类。
公共抽象类类名{
}
抽象类一般用Abstract作为类名的前缀,比如AbstractGraph,一眼就能看出是抽象类。
特点:
n抽象类不能创建对象,没有方法体调用抽象方法是没有意义的。
抽象类可以有抽象方法和普通方法。
n抽象类只有在拥有子类的情况下才有意义,子类必须覆盖父类的抽象方法,否则子类将被视为抽象类。
父类代码:
公共抽象类AbstractGraph {
公共抽象double get area();//没有方法体
}
子类代码:
测试类没有改变。
这一系列教程是丁琪媛·沃尔夫的基础Ja课程的内部教材。想要获得最佳的学习效果,需要配合相应的教学视频一起学习。需要完整的教学视频,请私信作者。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。