JAVA_learning 26

抽象类与抽象方法

abstarct 关键字

  1. abstract可以修饰类,方法
  2. abstract修饰的类被称为抽象类,抽象类不能实例化
    1. 虽然抽象类不能实例化,即,不能new对象,构造方法不能使用,但是其子类可以,因为创建子类对象的时候一定会调用父类的构造器。
    2. 也就是说抽象类中一定会有构造器,便于子类对象实例化
    3. 在开发中一定会提供抽象类的子类,毕竟抽象类本身不能实例化,如果没有子类。那将毫无用处
  3. abstract修饰的方法称为抽象方法
    1. 不是指方法体内没有语句
    2. 抽象方法只有方法的声明,没有方法体
    3. 抽象方法所在的类必定是抽象类(因为我们得保证抽象方法不能在本类中被调用,因此该类不能new对象,因此只能为抽象类)
    4. 但抽象类中可以没有抽象方法。(非抽象方法并不能影响当前类是否抽象,换句话说,抽象类只是能说明当前类无法实例化对象,不是抽象方法,子类也能继承)
    5. 抽象类中的所有方法都会被子类继承,但是子类无法直接调用抽象方法,所以只能重写所有抽象方法,这样子类就可以实例化,否则子类也为抽象类,需用abstract修饰
    6. 从抽象方法的形式上也可以看出,该方法存在的原因就是因为它是面向于多个子类的,不提供具体的方法实现方式,只是要求子类重写。
  4. abstract使用上的注意点:
    1. abstract 不能用来修饰:属性,构造器
    2. abstract 不能用来修饰私有方法——抽象类的子类中一定会有一个类实例化,但是如果方法被声明为private,那么该方法将对子类不可见,更不用说重写了
    3. abstract 不能修饰静态方法——定义抽象方法的目的是重写此方法,但如果定义成static的则不能重写,再者抽象类是不能实例化的,也就是不会分配内存空间,但是静态方法则不同,它随着类的加载而调用,因此会占据内存
    4. abstract不能修饰final的方法与类——fiinal修饰的方法不能被重写,final类不能被继承

抽象对象的匿名子类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值