JAVA 抽象类
2022/2/18 17:12:06
本文主要是介绍JAVA 抽象类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
抽象类
目录- 抽象类
- 一、基本介绍
- 二、注意事项和使用细节
- 三、抽象类最佳实际-模板设计模式
一、基本介绍
引出:
当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类
当父类的一些方法不确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。
- 一般来说,抽象类会被继承,由其子类来实现抽象方法
- 用abstract 关键字来修饰一个类时,这个类就叫抽象类
访问修饰符 abstract 类名{}
- 用abstract 关键字来修饰一个方法时,这个方法就是抽象方法
访问修饰符 abstract 返回值类型 方法名(参数列表);
//没有方法体
- 抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()
- 抽象类,是考官比较爱问的知识点,在框架和设计模式使用较多
二、注意事项和使用细节
-
抽象类是不能被实例化的
-
抽象类不一定要包含抽象方法,也就是说可以没有abstract方法
-
一旦类包含了abstract方法,则这个类必须是abstract类
-
abstract只能修饰类和方法,不能修饰属性和其他的。
package com.hspedu.abstract_; public class AbstractDetail01 { public static void main(String[] args) { //1.抽象类,不能被实例化 //new A(); // 'A' is abstract; cannot be instantiated } } //抽象类不一定要包含抽象方法,也就是说可以没有abstract方法,还可以实现的方法 abstract class A{ public void hi(){ System.out.println("hi"); } } //一旦包含了abstract方法,该类必须是abstract类 abstract class B{ public abstract void hi(); } //abstract 只能修饰方法和类,不能修饰其他 class C{ // public abstract int num1; }
-
抽象类可以有任意成员[抽象类本质还是类]
- 比如:非抽象方法,构造器,静态属性等
-
抽象类不能有主体,即:不能实现
-
如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。
package com.hspedu.abstract_; public class AbstractDetail02 { public static void main(String[] args) { } } abstract class E{ public abstract void hi(); } abstract class F extends E{ } class G extends F{ @Override public void hi() { //所谓实现方法,就是有方法体 System.out.println("hi~~"); } } //抽象类的本质还是类,可以有类的任何成员 abstract class D { public int n1 = 10; public static String name = "大龙"; public void hi() { System.out.println("hi"); } public abstract void hello(); public static void ok() { System.out.println("OK"); } }
-
抽象方法不能使用private、final和static来修饰,因为这些关键字和重写是相违背的
三、抽象类最佳实际-模板设计模式
需求:
- 有多个类,要完成不同任务的job
- 要求统计各自完成的时间
- 请编程实现
总结:
- 把公共的部分抽取出来写成一个方法,然后在把不确定的方法抽象化,放在合适的位置
- 以上的方法放在一个父类中,子类有需要使用时就经常该父类,然后重写抽象方法,这就是模板设计模式的体现
这篇关于JAVA 抽象类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?