----------------------------------------------------------学习总结,如有不对请不吝赐教
1.由abstract修饰
2.只有方法的定义,没有具体的实现,后面跟分号
abstract void demo();
3.包含抽象方法的类必须是抽象类,否则报错:
1.由abstract修饰
2.包含抽象方法的类必须是抽象类,但抽象类中可以不包含抽象方法
3.抽象类不能实例化(不能new对象),但能够作为类型进行变量的声明,并通过向上造型进行赋值(用抽象类的派生类new的对象对抽象类类型的变量进行赋值)
public abstract class AA { abstract void demo(); public static void main(String[] args) { AA a=new BB();//向上造型 } } class BB extends AA{ void demo(){ } }
在上面,BB作为AA的派生类,会继承AA的抽象方法,如果不对demo()进行重写,则demo()依然是抽象方法,那么BB需要声明为抽象方法,否则报错:
改成抽象的类则BB仍然为抽象类,其中含有抽象方法demo()
即:当有派生类继承抽象方法时,若不对抽象方法(所有)进行重写(添加方法体),则认为派生类中仍然含有抽象方法,则该派生类需要修饰为抽象类。并且不能进行实例化(new对象)
4.由于3.所以抽象类单独存在没有意义
5.扩展:能够直接创建抽象类的数组对象,并且通过向上造型对数组元素进行赋值。
public abstract class AA { abstract void demo(); public static void main(String[] args) { AA[] aa=new AA[10];//这里的抽象类只作为类型声明使用,不涉及实例化,实例化的是数组对象 aa[0]=new BB(); } } class BB extends AA{ void demo(){ } }
实际上,使用抽象方法进行重写较于普通方法的重写的优势在于:
当对象的行为必须重写,则设计为抽象方法,必须重写才能实现实例化(new对象),而普通的方法可以选择不重写。在开发过程中可以对代码编写起到限制作用
热门文章
- 我所在的城市有一家宠物医院的英语作文 我所在的城市有一家宠物医院的英语作文怎么写
- 【Flutter】Flutter C/C++ 插件的开发 (支持 windows、macos、ios、android )
- 2月1日最新机场订阅 | 18.5M/S|2025年V2ray/Shadowrocket/Clash/SSR免费节点地址链接分享
- 穷人能养猫吗(穷人养猫还是富人养猫)
- 1月31日最新机场订阅 | 19.8M/S|2025年SSR/Shadowrocket/V2ray/Clash免费节点地址链接分享
- 1月17日最新机场订阅 | 20.6M/S|2025年Shadowrocket/Clash/V2ray/SSR免费节点地址链接分享
- 1月29日最新机场订阅 | 19.3M/S|2025年SSR/Clash/V2ray/Shadowrocket免费节点地址链接分享
- 58同城狗狗领养武汉(武汉领养狗狗的平台)
- 动物防疫站可以打疫苗吗多少钱的简单介绍
- 免费宠物领养是不是真的假的(免费宠物领养是不是真的假的呢)