Java学习之抽象(abstract)

为什么要用抽象类

  • 在之前几篇中讲解了继承的相关知识。而在继承过程中,子类已经继承了父类的成员方法,但是子类又想访问自己的同名成员方法,所以引入了重写(override)的概念。
  • 如果一个父类中的成员方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的成员方法实现的方法体就没有实际意义了,而只有声明还有意义。我们就可以把没有方法主体的方法称为抽象方法。而包含抽象方法的类就是抽象类。

总而言之,没有方法体的方法叫做抽象方法,包含这样的抽象方法的类就叫做抽象类。

了解了抽象的相关概念,接下来我们来学习抽象的用法。

抽象类的使用方法

还是先从抽象方法入手:
使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

  • 代码格式:
    修饰符 abstract 返回值类型 方法名 (参数列表);

包含抽象方法的类就是抽象类。抽象类同样也需要abstract关键字进行修饰。

  • 代码格式:
    abstract class 类名字 { }

例如:

public abstract class Person {//父类
   public abstract void study();
   }

抽象父类的成员方法因为没有方法体,所以该方法必须被继承该抽象父类的子类重写。

public class Teacher extends Person {  //子类1
    @Override
    public void study() {
        System.out.println("老师要学习");
    }
}

接下来创建子类对象来调用该方法:

    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.study();
}

在这里插入图片描述

考点总结

  1. 抽象类不能创建对象。只能通过其非抽象的子类创建对象。因为,通过一个类创建的对象,其目的是要调用类中的方法,而抽象类的方法时抽象方法,抽象方法没有方法体,所以这样做毫无意义。
  2. 抽象类的子类必须重写抽象类的所有抽象方法。如果子类也是抽象类,则需要其子类的子类来重写抽象方法。总之,一个抽象类的抽象方法必须由其直接子类或间接子类重写。这是因为,如果这个抽象类没有被重写,这个类始终没有方法体,这样的方法没有任何意义。
  3. 一个抽象类不一定含有抽象方法,但是含有抽象方法的类一定是抽象类。同样地,没有抽象方法的抽象类也不能直接创建对象。
  4. 抽象类中是允许有构造方法的,因为子类对象调用子类的非抽象方法时,其构造方法的第一行会有默认的super(),可以实现对父类成员的初始化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值