【Java】6.5 抽象类
生活随笔
收集整理的这篇文章主要介绍了
【Java】6.5 抽象类
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
目录
抽象类和抽象方法
为什么要使用抽象类
抽象类和抽象方法
抽象类:使用abstract修饰的类就是抽象类。总结起来,抽象类的特性就是有得有失:
- 得:就是可以设置抽象方法
- 失:就是不能创建实例
- 其他的普通类可以有的抽象类也可以有
【抽象类的注意点】
抽象方法:使用abstract修饰且没有方法体(即没有花括号的方法)
【抽象方法的注意点】
为什么要使用抽象类
主要和“模板模式”结合在一起
需求场景:程序需要实现A方法,但是A方法又需要调用B方法。但此时,B方法暂时不知道如何实现(不同的子类对B方法的实现【是不同】)。此时就是需要把B方法定义成抽象方法。
Volume.java
//定义一个抽象类 public abstract class Volume {public Volume() {}// 定义一个抽象的实现求体积的方法public abstract double getVolume(); }Cube.java
public class Cube extends Volume {// 定义成员变量,正方体的边长private double edge;// 定义一个无参数的构造器,一个有参数构造器public Cube() {}public Cube(double edge) {this.edge = edge;}// 因为成员变量时private修饰,所以需要setter和getter方法获取相关数据public double getEdge() {return edge;}public void setEdge(double edge) {this.edge = edge;}// 重写getVolume方法@Overridepublic double getVolume() {return edge * edge * edge;}}Cylinder.java
public class Cylinder extends Volume {// 定义成员变量,圆柱体的底面半径和高private double radius;private double height;// 创建两个构造器,一个无参数构造器,一个有参数构造器public Cylinder() {}public Cylinder(double radius, double height) {this.radius = radius;this.height = height;}/// 因为成员变量时private修饰,所以需要setter和getter方法获取相关数据public void setRadius(double radius) {this.radius = radius;}public double getRadius() {return radius;}public void setHeight(double height) {this.height = height;}public double getHeight() {return height;}// 重写getVolume方法@Overridepublic double getVolume() {return Math.PI * radius * radius * height;} }AbstractTest.java
public class AbstractTest {public static void main(String[] args) {// 多态,向上转型Volume cylinder = new Cylinder(3.14, 5.56);Volume cube = new Cube(5.6);System.out.println("圆柱体的体积:" + cylinder.getVolume());System.out.println("正方体的体积:" + cube.getVolume());} }【注释1】当static修饰方法的时候,说明这个方法属于类本身。调用这个方法时,可以直接通过类调用。当使用abstract修饰该方法时,该方法是没有方法体的。此时,若通过类调用该方法,就会出现错误(调用没有方法的方法体)
总结
以上是生活随笔为你收集整理的【Java】6.5 抽象类的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【Java】6.4 final 修饰符
- 下一篇: 【Java】6.6 Java 8 改进的