java抽象类

一、什么是抽象类?

抽象类是啥呢?就是越抽象越累!

抽象类就是:

        1、被abstract修饰的类,而被abstract修饰的类呢不能被实例,只能被继承这个称为抽象类         2、还有一个东西叫做抽象方法,同样也是有abstract修饰符,抽象方法呢它没有方法体。

······就长这个亚子:

        

听起来可能还是很抽象,但是看完第二条就知道抽象类到底是干啥的啦。

二、为什么要有它?

    现在我要写一个几何图形类,然后类里面有几何图形的基本属性:长、宽、高还有一个求面积的方法,长宽高还能理解,因为每个图形都会有长宽高。但是这个求面积的方法,我们没办法去确定怎么写它,因为几何图形有圆形、方形、长方形等等等等,每一个图形的面积求法都不同,那么我们在几何图形这个类中写这个方法的时候就很尴尬,这个时候我们就可以把他写成一个抽象的方法,然后让子类(也就是具体的一个图形类(圆形类、方形类等等))去重写它这个方法去求他的面积

 这个时候我们就可以把它这个方法写成一个抽象的方法,然后让继承的类去重写这个方法

三、怎么用?

只管给他加上abstract就完事儿了!干就完了!

abstract class Geometry{
    //几何图形基本属性
    private double length;
    private double width;
    private double height;
    //构造方法
    public Geometry(double length, double width, double height) {
        this.length = length;
        this.width = width;
        this.height = height;
    }

    public Geometry(double length, double width) {
        this.length = length;
        this.width = 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;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    //改进它!!!!!
    public abstract double calculated_area();

我们写一个子类-长方形类:

//我们写一个长方形类
class rectangle extends Geometry{
    public rectangle(double length, double width) {
        super(length, width);
    }
    @Override
    public double calculated_area() {
        return super.getLength() * super.getWidth();
    }
}

再写一个正方形类吧

class square extends Geometry{
    public square(double length, double width) {
        super(length, width);
    }

    @Override
    public double calculated_area() {
        return super.getLength()*super.getLength();
    }
}

可以发现都对父类抽象的方法进行了重写.

四、小小的细节

使用的小细节只有亿点点而已

1、抽象类不能被实例化
2、抽象类不一定要包含抽象方法,也就是说抽象类可以没有abstract方法
3、一旦类包含了抽象的方法,则这个类必须声明为abstract
4、abstract只能修饰类和方法,不能修饰属性和其他的
5、抽象类可以有任意的成员[抽象类的本质还是一个类],比如我们可以有非抽象的方法、构造器、静态属性等等
6、抽象方法不能有方法体,即不能实现
7、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除法它自己也声明为abstract类
8、抽象方法不能使用private、final和static
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨型程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值