欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

9.JAVA-抽象类定义

发布时间:2025/6/17 编程问答 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 9.JAVA-抽象类定义 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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的单继承,每个类只能从一个抽象类继承.没有接口灵活.

 

下章学习: 10.JAVA-接口、工厂模式、代理模式、详解

 

转载于:https://www.cnblogs.com/lifexy/p/10826817.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的9.JAVA-抽象类定义的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。