抽象类的方法与使用

面对对象的世界中,一切都可以通过类来使用,万事万物皆对象·
但是在某些类比较抽象的概念 ,没办法对应到具体的实体
比如Sharp(图形类)无法具体描绘一个对象,只是作为具体对象的父类,这种类就可以定义抽象类!!!
使用关键字abstract定义抽象类,抽象类是普通类的超集!只是比普通类多了一些抽象方法而已,普通类具有的内容,抽象类都有
使用anstract定义抽象方法,抽象方法没有方法体,只有方法声明,但是,这并不是说没有方法体就是抽象方法,要先看是否有关键字abstract
eg:在Java中,native放法也是没有方法体的,这种方法不是抽象方法本地方法是由C++实现的方法,Java只负责调用,方法体实现是C++代码
JVM本身就是C++实现的
抽象类和抽象方法的使用原则:

  1. 抽象类不能直接实例化对象,即使抽象类中,没有任何抽象方法,也无法实例化对象!
    只能通过向上转型进行引用赋值
    2 抽象类的子类若是普通类,必须覆写抽象类的所有抽象方法但如果子类是抽象类可以一个方法都不覆写!!(强制子类必须进行方法的覆写,保证多态的正常运行)抽象方法所在的类必须使用abstract声明为抽象类
    3 abstract和其他关键字的使用
    privateabstract能否修饰一个方法?
    不能
    因为private子类无法进行覆写,abstract必须被子类覆写
    finalabstract能否同时出现?
    不能
    final没有子类,也不能被覆写而abstract必须有子类必须被覆写
    staticabstract能同时出现吗?
    不能 abstract 和static,final,private不能同时出现
    关键点:抽象方法没有加访问权限时默认是包权限
    4 抽象类是普通类的的超集,抽象类中仍然能定义普通方法和构造方法,且满足对象那个实例化流程先调用抽象类的构造方法而后调用子类的构造方法
    抽象类就是在普通类的基础上进一步提取,只是比普通类多了一些抽象方法而已
    抽象方法的存在要求子类必须进行覆写,从而保证多态的正常运行
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值