9.JAVA-抽象类定义
2019-05-08 07:36:16来源:博客园 阅读 ()
1.抽象类
- 抽象类,用来表示一个抽象概念.
- 是一种只能定义类型,而不能产生对象的类,所以定义了抽象类则必须有子类的出现.
- 抽象类的好处在于能够明确地定义子类需要覆写的方法
- 抽象类需要使用abstract声明.
- 抽象类里可以实现抽象方法,该方法特征在于:只有声明,并没有方法体(所以子类必须全部覆写,并且子类不能为抽象类)
比如图形(Shape)类, 就是一个抽象的概念,因为我们无法计算这个“图形”的面积,所以它的成员函数area()是空的。
而继承它的子类(矩形,椭圆形,三角形等)就可以去覆写area()成员函数. 里面通过数学公式,计算出面积.
参考图形(Shape)类,代码如下:
abstract class Shape //抽象的图形类 { abstract public double area(); //abstract修饰的方法为抽象方法,无需实现方法体.但是必须被子类覆写 } class Ellipse extends Shape //椭圆类 { private double wr; //椭圆的半径宽度 private double hr; //椭圆的半径高度 public Ellipse(double wr,double hr) { this.wr = wr; this.hr = hr; } public double area(){ return 3.14159*wr*hr; } } public class Test{ public static void main(String args[]) { //Shape s = new Shape(); //如果定义抽象类,则将会报错 Ellipse e = new Ellipse(2.5,1); System.out.println("Ellipse area = "+e.area()); } }
需要注意的是:
- 抽象类可以存在构造方法,用来初始化抽象类的属性,
- 抽象类不能使用final定义,
2.抽象内部类定义
在java中,如果我们抽象类的子类只有一个的话,则可以将它封装为抽象内部类里,从而为用户隐藏了这个无需知道的类.在类库中很常见.
示例如下:
abstract class A //抽象类 { abstract public void printData();//abstract修饰的方法为抽象方法,无需实现方法体.但是必须被子类覆写
static private class B extends A //需要在抽象类里隐藏的内部类 { private int Data=12; public void printData() { System.out.println("B Data:"+this.Data); //打印内部类的Data值 } } static public A getInstance() //获取实例 { return new B(); //通过静态方法来获取要隐藏的静态抽象内部类 (静态方法里只能使用静态变量) } } public class Test{ public static void main(String args[]) { A a = A.getInstance(); a.printData(); //等价于: A.getInstance().printData(); } }
打印如下:
抽象类缺点:
- 由于Java的单继承,每个类只能从一个抽象类继承.没有接口灵活.
接下来下章学习接口.
原文链接:https://www.cnblogs.com/lifexy/p/10826817.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 类的继承,方法重新中修饰符如何定义 2020-06-10
- 错误: 在类中找不到 main 方法, 请将 main 方法定义为: & 2020-06-06
- Java抽象类 2020-06-03
- 接口 2020-06-01
- JAVA自定义注解 2020-06-01
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