抽象类
2018-10-24 08:44:56来源:博客园 阅读 ()
一、什么是抽象类?
在父类中,有一些子类的共同方法,但这些方法在父类中没有具体的实现,这样的方法就称为抽象方法,在方法头中使用abstract修饰符表示。包含有抽象方法的类就称为抽象类。
在UML图形记号中,抽象类和抽象方法的名字用斜体表示。
抽象类不能使用new操作符创建它的实例。抽象方法只有定义而没有实现。它的实现由子类提供。一个包含了抽象方法的类必须声明为抽象类。
抽象类的构造方法定义为protected,因为它只能被子类使用。
抽象类的几点说明:
(1)抽象方法不能包含在非抽象类中,也就是说,只要包含了抽象方法,这个类就一定要定义为抽象类。在抽象类扩展的非抽象子类中,必须实现所有的抽象方法。抽象方法是非静态的。
(2)可以定义一个不包含抽象方法的抽象类。
(3)抽象类不能使用new操作符来初始化。
(4)子类可以覆盖父类的方法并将它定义为abstract。
(5)即使子类的父类是具体的,这个子类也可以是抽象的。
(6)不能使用new操作符从一个抽象类创建一个实例,但是抽象类可以用作一种数据类型。
二、为什么要使用抽象类?
举例:
设计一个几何图形对象GeometricObject,设计一个方法比较两个几何面积是否相等。如果没有抽象方法getArea(),则无法实现equalArea()。
abstract class Geometric { public abstract double getArea() ; public boolean equalArea(Geometric o) { return (this.getArea()==o.getArea()) ; } } class Circle extends Geometric { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI*radius*radius; } } class Rectangle extends Geometric { private double width,height; public Rectangle(double width,double height) { this.width = width; this.height = height; } public double getArea() { return width*height; } } public class TestAreEqual { public static void main(String[] args) { Geometric o1 = new Circle(1); Geometric o2 = new Rectangle(1,Math.PI); System.out.println(o1.equalArea(o2)); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 5月到6月程序员到底经历了和什么,工资狂跌***元,你是否也 2020-06-10
- 为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中? 2020-06-09
- 计算机基础到底是哪些基础?为什么很重要! 2020-06-08
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 高手眼中的观察者模式有什么不一样 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash