当前位置: 首页 > news >正文

GOGOGO 抽象

抽象其实也算面向对象特征之一

抽象

含义:当多个子类中的共性向上提取,父类中不知道如何写具体实现,因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】,就需要抽象概念

作用

父类只抽取结构,不抽取实现,并且子类继承了父类之后,必须强制重写该结构

为什么需要用抽象类

当多个子类存在公共特性的时候,会把它们公共的属性和行为向上提取,比如都提取了移动的方法,有跑、跳、滚、爬等等,但是该方法里面,不知道具体写什么,因为父类里面定义的代码,都是子类公共代码,虽然子类可以重写父类的方法,但是没有强制的约束,有些子类可能没有重写,那么调用移动的方法就会出现很大的问题

何为抽象类?

abstract 修饰的类

例:
public abstract class DemoAbstract {类成员……;
}

抽象类里面的成员有哪些?

A、成员变量
B、构造方法
C、普通方法(包含静态/非静态方法)
D、抽象方法【先有抽象类,再有抽象方法;并且只有结构没有方法体】

例:
public abstract class DemoAbstract {//成员变量String name;//无参构造public DemoAbstract(){}//有参构造public DemoAbstract(String name){this.name = name;}//普通方法——静态修饰方法public static void demoMethodStiatic(String name){System.out.println(name);}//普通方法——非静态修饰方法public void demoMethod(String name){System.out.println(name);}//抽象方法abstract void method();
}

如何调用

在实际开发中,一般都是普通类去继承抽象类,从而普通类的实例化,进行方法的使用

在这里插入图片描述

注意事项

A、abstract修饰的类不能被实例化【虽然有构造方法,但是不能被实例化,否则直接编译错误】

在这里插入图片描述

B、抽象方法不能放到普通类里面,只能放到接口或抽象类中

在这里插入图片描述

C、抽象方法只能放到抽象类中,普通类继承抽象类,必须重写抽象类中的方法

在这里插入图片描述

如果是抽象类继承抽象类,不会强制重写基类抽象类中的方法

在这里插入图片描述

PS1:有继承关系,this对于成员变量和普通方法时,在当前类中找不到可以向上(父类)查找,但对于构造方法只能当前类查找,不能向上查找

PS2:@Override注解表示方法重写,专门用来验证方法是否重写成功了的

PS3:对于方法重写,final修饰的方法不能被子类重写

http://www.lryc.cn/news/515651.html

相关文章:

  • STM32-笔记26-WWDG窗口看门狗
  • 10.装饰器
  • uniapp H5页面实现懒加载
  • STM32使用UART发送字符串与printf输出重定向
  • NLP初识
  • 解決當前IP地址僅適用於本地網路
  • Eplan 项目结构(高层代号、安装地点、位置代号)
  • 文献分享集:跨模态的最邻近查询RoarGraph
  • xdoj 判断字符串子串
  • n8n - AI自动化工作流
  • asp.net core 属性路由和约定路由
  • 【PS不常见教程】实操篇之通道抠图-抠黑色背景的图片
  • 电子电气架构 --- 整车整车网络管理浅析
  • 【数据结构05】排序
  • 推荐系统的三道菜
  • ModuleNotFoundError: No module named XXX
  • JAVA:HashMap在1.8做了哪些优化的详细解析
  • jest使用__mocks__设置模拟函数不生效 解决方案
  • javaEE-网络原理-1初识
  • 笔上云世界微服务版
  • linux安装redis及Python操作redis
  • node.js内置模块之---stream 模块
  • 《learn_the_architecture_-_aarch64_exception_model》学习笔记
  • 【C++项目实战】贪吃蛇小游戏
  • Python基于matplotlib实现树形图的绘制
  • 【UE5 C++课程系列笔记】21——弱指针的简单使用
  • 【游戏设计原理】46 - 魔杖
  • 【路径跟踪】PIDMPC
  • Spring源码分析之事件机制——观察者模式(二)
  • 热备份路由HSRP及配置案例