java中的抽象类

为什么需要使用抽象类?

比如说:形状肯定有计算周长和面积的方法,但是具体如何计算的,却无法描述,三角形有三角形计算的方法,圆有圆计算的方法。所以在形状这个类里只能声明这个方法,但是不能实现。

 

抽象类语法:

abstract class 类名{

属性

方法

}

抽象方法语法:

public abstract [返回值] [void] 方法名 (参数列表);没有方法体。

如果一个类中存在这样的方法,那么这个类一定是抽象类,这个类上也要有abstract标识

 

注意:抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类

 

抽象方法概念:只有声明,没有实现。abstract修饰抽象方法

抽象类:就是含有抽象方法的类(abstract class)。

抽象类不能被实例化,必须被子类继承才能使用子类实例化,作用是:对后代进行规则,即凡是它的后代,必须实现它未实现的方法

抽象类也可以继承抽象类,这样不需要实现父抽象类的方法

抽象类的抽象方法不能和private,final,static共存。

 

在上一章中动物多态性的案例中,我们提到了动物有“叫”的方法

public class Animal {
    public void shout(){
        System.out.println("吼吼……");
    }
}

实际上,我们能确定的是动物是有“叫”的方法,但是具体怎么叫是无法描述的!

那么在Java中如何来描述和解决这样的问题呢——抽象方法

抽象类不能实例化对象,下面的代码是错误的

Animal a1 = new Animal();

既然不能实例化对象,那么抽象类还有什么用呢?

抽象类是去完成上层规划,对它的后代进行规划和约束,不去考虑具体实现细节,后代必须去按照他的要求去实现,但具体怎么实现后由后代去决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值