java 抽象类

什么是抽象

        在 java 的编码当中,我们经常会遇到一些被 abstract 关键字修饰的类

public abstract class 类名{
    // 省略内容
}

        这样的一个类就是抽象类 

为什么需要抽象

        在 java 三大特性之继承(重写) 这一章中,我们以 Animal 为例,提到了子类对父类方法的重写。

        从类的角度看,动物可以有很多物种,不能将其描述为“动物是猫”这样具体的一个类;但所有物种都可以将其描述为“猫是动物,狗是动物”这样一个具有概括性很较为抽象的类。所以在建立一个对象时,我们通常会建立一个具体的物种,而不是一个抽象的描述。

// 我们通常会去创建一个具体的类
    Cat cat = new Cat();
    Dog dog = new Dog();

// 而不会去创建一个抽象的描述
    Animal animal = new Animal();

        从方法的角度看,所有动物有“吃”这个动作,而每一种动物都一定具备这一种行为,且它们都有其不同的“吃”的方法和特点,如撕咬、舔舐、吸允等。那么对于动物这个父类而言,“吃”这个行为就没有去描述的必要,若继承给子类后,这些子类往往是用不上的,有时为了正确使用,不得不去重写它们,而如果忘记重写它们,在调用时,又会调用到这些不太有意义的方法。因此,改用抽象方法去描述,而子类必须对这个抽象方法进行重写,否则子类无法创建。

如何实现抽象类

        1)定义抽象类

        用 abstract 关键字修饰类名

public abstract class Animal{
    // 省略内容
}

        这样就定义了一个抽象类,抽象方法也是在这个基础上进行描述的

        2)定义抽象类

        同样,用 abstract 关键字来修饰方法名

public abstract class Animal{
    public void eat();
}

        与普通方法不同的是,抽象方法不需要用 {} ,因为它不需要具体内容来描述,留待子类来实现

        3)如何实现抽象类

        抽象类的实现要依赖子类

        首先,我们创建一个 Animal 抽象类

 

        如图,我们成功创建了一个抽象类,下面需要对其进行实现,即创建子类

抽象类的特点

  •   抽象类和抽象方法都需要用 abstract 关键字修饰
  •   抽象类中可以没有抽象方法,但抽象方法一定在抽象类当中
  •   抽象类不能被直接创建对象(只有在创建子类的时候才会被创建)
  •   抽象类有构造方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值