Java中的抽象类

Java抽象类

当我们在编写一个类时,常常会为该类定义一些方法,这些方法用来描述该类的行为方式,那么这些方法都有具体的方法体。但是在某些情况下,某个父类只知道其子类应该包含哪些方法,但无法准确的具体描述。当我们在定义一个图形时,这个类中提供了计算周长的算法,但是图形计算周长的方法,不一样,所以父类无法准确的知道其子类计算周长的方法。抽象正是解决这个问题的。

  • 抽象类和抽象方法
    抽象方法和抽象类都必须使用abstract修饰符来定义,有抽象方法的类只能定义成抽象类,抽象类里可以没有抽象方法。
    抽象方法和抽象类必须遵循以下原则:
    1.抽象类和抽象方法必须使用abstract关键字来修饰,抽象方法体中不能有方法体。
    2.抽象类不能被实例化,无法用new关键字来调用抽象类的构造器创建抽象类的实例。即使抽象类中不包含抽象方法,这个抽象方法也不能被实例化。
    3.抽象类中可以包含成员变量、方法、构造器、初始化代码块、内部类5种成分。抽象类的构造器不用于创建实例变量,主要是用于被其子类调用。
    4.含有抽象方法的类只能被定义成抽象类。

  • 定义抽象方法
    定义抽象方法只要在普通方法上增加abstract修饰,并把普通方法的方法体全部去掉,并且在方法之后增加分号即可。

abstract public class AbstractTest {
     //定义抽象方法
    public abstract void fly();
    public abstract  int i = 1;//错误
    //abstract不能用于修饰类方法
    public abstract static void sleep();
     //abstract不能用于修饰final类型的方法
    public abstract final void breath();
}

abstract 不能用于修饰成员变量。不能用于修饰局部变量。即没有抽象成员变量等说法。abstract也不能用于修饰构造器,没有抽象构造器,抽象类里定义的构造器只能是普通构造器。
abstract 不能用于修饰static方法,即通过该类去调用该方法,但如果该方法被定义成抽象方法,则导致通过该类调用该方法是出现错误(调用了一个没有方法体的方法,肯定会出错,所以不能定义)。
abstract不能用于修饰final的方法,该方法用了final之后就是一个不能被重写,而abstract修饰的方法,必须重写。
下面我们实现以下抽象类

//定义一个抽象类,计算面积
abstract class  Shape {
    public  Shape(){

    }

    public abstract double findArea ();
}
//继承抽象类,实现一个圆的面积计算的方法
public class RealAbstract extends Shape {
    private double redius;


    public double getRedius() {
        return redius;
    }

    public void setRedius(double redius) {
        this.redius = redius;
    }

    @Override
    public double findArea() {

        return Math.PI * redius * redius;
    }

    public static void main(String[] args) {

        RealAbstract realAbstract = new RealAbstract();
        //设置圆的半径
        realAbstract.setRedius(5.6);
        //计算圆的面积
        System.out.println(realAbstract.findArea());
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

最好的文酱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值