抽象类与抽象方法

抽象类与抽象方法

抽象类

使用 abstract 修饰类 (public abstract class 类名)

效果:这个类不可以new

抽象方法

abstract 关键字也可以用于方法——抽象方法

  • 抽象方法没有方法体
  • 抽象方法必须在抽象类里
  • 抽象方法必须在子类中被实现,除非子类是抽象类

语法

[访问修饰符] abstract class类名{
    
    //只有方法声明无具体实现
    [访问修饰符] abstract <返回类型> <方法名> ([参数列表]);
    //有抽象的类必然是抽象类
    //在抽象类中的方法并不一定都是抽象方法
}

抽象方法:

抽象类中才可以写抽象方法

抽象类的优势

  • 提高可用性
    • 抽象类可以看作是类的一个模板,定义了子类的行为,可以为子类提供默认实现,无需子类中重复实现这些方法
  • 代码松耦合,更易于维护
    • 子类可以分别为实现抽象类父类中的抽象方法,将方法定义和方法实现的分离
  • 方便实现多态
    • 抽象类作为继承关系下的抽象层,不能被实例化,通常定义抽象类类类型变量,其具体引用是实现抽象类的子类对象

抽象类与抽象方法

  • 抽象方法只有方法声明,没有方法实现

  • 有抽象方法的类必须声明为抽象类

  • 子类必须重写所有的抽象方法才能实例化;否则,子类也必须声明成抽象类

  • 抽象类中可以没有、有一个或多个抽象方法,甚至可以定义全部都是抽象方法

  • 抽象类可以有构造方法,其构造方法可以被本类的其他构造方法调用

    • 不是由private 修饰构造方法,可以被其子类的构造方法调用 (一般用作设计模式用)

常见错误

请添加图片描述

知识扩展

final 用法

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 深入了解
  1. abstract 和 static 不能结合使用
  2. abstract 和 private不能结合使用
  3. abstract 和 final 不能结合使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值