Java抽象类

Java抽象类
1、java抽象类
抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法必须用 abstract 关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用 abstract 关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为 abstract 方法,此时这个类也就成为 abstract 类了。
包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。
2、抽象类应用场景
比较两个图形的面积和周长:
定义一个抽象类Shape,Shape类定义抽象方法area()和perimeter()
Shape类:
public abstract double area();
public abstract double perimeter();
定义Rectangle类和Circle类继承于Shape类
Rectangle类和Circle类各自实现area()和perimeter()
Rectangle类:
private double length;
private double width;
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
@Override
public double area() {
return getLength() * getWidth();
}
@Override
public double perimeter() {
return 2 * (getLength() + getWidth());
}
Circle类:
private double diameter;

public double getDiameter() {
    return diameter;
}

public void setDiameter(double diameter) {
    this.diameter = diameter;
}

@Override
public double area() {
    return Math.PI * Math.pow(getDiameter() / 2, 2);
}

@Override
public double perimeter() {
    return Math.PI * getDiameter();
}

测试类:
public static void main(String [] args){
Rectangle rec = new Rectangle();
rec.setLength(10);
rec.setWidth(5);
double rec_area = rec.area();
double rec_perimeter = rec.perimeter();
System.out.println(“矩形的面积:”+rec_area+",周长"+rec_perimeter);

        Circle cir = new Circle();
        cir.setDiameter(10);
        double cir_area = cir.area();
        double cir_perimeter = cir.perimeter();
        System.out.println("圆形的面积:"+cir_area+",周长"+cir_perimeter);
       
    }

运行结果

抽象类可以看作是对多种具有相似物品的一种归纳,比如说三角形、矩形、圆形都是图形,可以计算面积、周长等。我们就可以从中抽象出图形类,以及面积、周长两个抽象方法。由于不知道图形具体是什么,所以图形抽象类不能被实例化。当我们知道图形具体对应的是三角形、矩形、圆形或其他图形时,就可以进行实例化,再在这些子类中分别重写计算周长、面积的方法。

3、抽象类的理解

抽象类和普通类的主要有两个区别:抽象类不能用来创建对象;如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。
总的来说抽象类就是为了减少代码的冗余。抽象类相当于一个模板,在这个模板中子类可以根据自身不同的特性,以不同的方式重写抽象方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值