黑马程序员 04 面向对象_继承_抽象_多态

WKWebView 白屏问题,WKWebView request body丢失问题 1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会... 阅读详情
  -------  android培训 、 java培训 、期待与您交流! ----------

面向对象

    面向对象是相对面向过程而言,面向对象和面向过程都是一种思想。

    面向过程:强调的是功能行为。

    面向对象:将功能封装进对象,强调具备了功能的对象。

    面向对象是基于面向过程的。

    在Java的世界中,“万物皆对象”!


面向对象的特点: 

这是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者。

完成需求时,先要去找具有所需的功能的对象来用。如果该对象不存在,那么创建一个具有所需功能的对象。这样简化开发并提高复用。


面向对象开发,设计,特征:


 

开发的过程:其实就是不断的创建对象,使用对象, 指挥对象做事情。 

设计的过程:其实就是在管理和维护对象之间的关系。

特征:

         封装(encapsulation)

         继承(inheritance)

         多态(polymorphism)




封装
(1)隐藏实现的细节,提供公共的访问方式。
类,方法等其实都是封装的具体体现。
(2)private关键字
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。
(3)常见的应用:(掌握)
类中的所有成员变量私有,给出对应的get/set方法。
成员变量和局部变量的区别
(1)定义位置区别:
成员变量:定义在类中,方法外。
局部变量:定义在方法中,或者方法声明上。
(2)初始化值的区别:
成员变量:都有默认初始化值。
局部变量:没有默认初始化值。要想使用,必须先赋值。
(3)存储位置区别:
成员变量:存储在堆中。
局部变量:存储在栈中。
(4)生命周期区别:
成员变量:随着对象的创建而存在。随着对象的消失而消失。
局部变量:随着方法的调用而存在,随着方法调用完毕而消失。


构造方法
(1)格式及特点
格式:
访问权限修饰符 类名(参数...){}


访问权限修饰符:
public,private
特点:
A:方法名和类名相同
B:没有返回值类型
C:没有具体的返回值
(2)注意事项:
A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
  这个时候,你如果要使用无参构造方法:只能自己提供


  推荐:永远手动给出无参构造方法。


4:this关键字
(1)是一个关键字。代表当前类的对象引用。
在方法中,哪个对象调用方法,this就代表谁。
(2)应用场景:
解决局部变量隐藏成员变量问题。


5:static关键字
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)静态的特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
D:可以通过类名调用
(3)静态的注意事项:
A:在静态方法中是没有this关键字的。
B:静态方法只能方法静态的成员变量和静态的成员方法。
(4)静态内容的调用:
A:被对象调用
B:被类名调用



继承


    多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。

    多个类可以称为子类,单独这个类称为父类或者超 类。

    子类可以直接访问父类中的非私有的属性和行为。

    通过extends 关键字让类与类之间产生继承关系。

 class SubDemo extends Demo{   }

   继承的出现提高了代码的复用性。继承的出现让类与类之间产生了关系,提供了多态的前提。

 

 

继承的特点:

 

  Java只支持单继承,不支持多继承。

          一个类只能有一个父类,不可以有多个父类。

          class SubDemo extends Demo{} //ok

          class SubDemo extends Demo1,Demo2...//error

 

  Java支持多层继承(继承体系)

          class A{   }

          class B extends A{   }

          class C extends B{   }

 

    定义继承需要注意:

          不要仅为了获取其他类中某个功能而去继承

          类与类之间要有所属("is a " )关系,xx1是xx2的一种。


Java语言中:java只支持单继承,不支持多继承。

 

抽象

    抽象定义:

          抽象就是从多个事物中将共性的,本质的内容抽取出来。

          例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。

 

    抽象类:

          Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。

 

    抽象方法的由来:

          多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。


   抽象类的特点:


    抽象类和抽象方法必须用abstract关键字来修饰。抽象方法只有方法声明,没有方法体,定义在抽象类中。

    格式:修饰符abstract返回值类型函数名(参数列表) ;

    抽象类不可以被实例化,也就是不可以用new创建对象。原因如下:

    抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。

    而且抽象类即使创建了对象,调用抽象方法也没有意义。

    抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象 方法后才可以创建对象,否则该子类也是抽象类。


   总结:

    抽象类和一般类没有太大的不同,该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂的东西。这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。通过抽象方法来表示,抽象类比一般类多个了抽象函数,就是在类中可以定义抽象方法。

    抽象类不可以实例化。

    特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。



多态

 

定义:某一类事物的多种存在形态。

体现:父类或者接口的引用指向或者接收自己的子类对象。

作用:预先定义的程序可以运行后期程序的内容。增强了程序的扩展性。和后期可维护性。

多态的弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容,不能预先使用子类中定义的特有功能。

前提:需要存在继承或者实现关系 要有覆盖操作。

 多态的应用:

           instanceof :用于判断对象的类型,对象 intanceof类型(类型接口类型)

 

接口


当接口初期理解,可以认为是一个特殊的抽象类,

当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表现。

Class:用于定义类;Interface:用于定义接口。


接口定义时,格式特点:

1.接口中常见定义,常量,抽象方法。

2.接口中的成员都有固定修饰符。常量:publicstaticfinal方法:publicabstract

接口中的成员都是public的。


接口不可以创建对象,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化,否则子类是一个抽象类。

LVGL colorwheel组件教程一(调色板) 【代码】LVGL colorwheel组件教程一(调色板) 阅读详情

相关推荐

银河麒麟V11 + KVM/QEMU + GT 710 GPU直通 Win10 完整操作流程文档

宿主机:RTX 5080专门运行ollama大模型服务,通过SSH/VNC远程管理Win10虚拟机:GT 710直通,物理键盘专属,通过物理显示器处理视频应用硬件隔离:两个系统完全隔离,互不干扰,性能最大化两种不同的直通方式直通方式 配置方法 设备在宿主机的状态 典型应用场景PCIe设备直通 vfio-pci.ids=10de:128b,10de:0e0f 设备完全从宿主机消失,被vfio-pci驱动接管 GPU、网卡、NVMe硬盘。

weixin_45285654的博客 1153

黑马程序员 面向对象(二)继承、接口、多态和异常

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

482

第1期技术: DQN算法原理及实现过程

利用神经网络近似值函数的方法表示为: V^(s,w)≈Vπ(s)q^(s,a,w)≈qπ(s,a) \hat{V}(s, w) \approx V_{\pi}(s) \\ \hat{q}(s, a, w) \approx q_{\pi}(s, a) V^(s,w)≈Vπ​(s)q^​(s,a,w)≈qπ​(s,a) 那么具体的工作过程是怎样实现的? 以及如何从端到端的过程,本文将讲解Deep Q Network(DQN, 而这正是由DeepMind于2013年和2015年分别提出的两篇论文《Playi

深度强化学习实验室:一个“开源开放、共享共进”的强化学习学术组织。 4953

黑马程序员_Java语言_面向对象_多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-09.01_面向对象(多态的概述及其代码体现)

jiao142857的博客 884

Marvell 88E6390x交换芯片:从零构建No-CPU模式网络交换系统

本文详细介绍了如何为Marvell 88E6390x以太网交换芯片构建No-CPU模式网络交换系统。通过解析其核心价值与硬件准备,并手把手指导使用CodeBlocks、IMPGUI和SwitchGUI等软件工具进行配置代码编写、镜像生成与烧录,最终实现交换芯片脱离外部CPU独立工作,适用于成本敏感、空间受限的嵌入式网络设备设计。

plant的博客 483

ArcGIS License Server点击启动没反应,许可管理器无法启动怎么办

4 当我们再打开ArcGIS License Server Administrator的时候。3 在【服务】中找到【ArcGIS License Manager】双击。无法启动ArcGIS License Server的情况。在使用ArcGIS的过程中,我们经常会遇到。专注GIS领域知识分享,交流行业软件技巧。欢迎关注,不定期分享GIS各种问题和技巧。1 右击我的电脑——【管理】服务状态——启动,确定即可。启动类型选择——自动。

GIS蒲公英的博客 2万+

【C++】黑马程序员C++核心编程学习笔记(完结)

黑马程序员学习笔记——C++核心编程。除上课讲的内容以外还有一些自己的理解。

1万+

torchsparse安装

torchsparse安装以及安装失败原因分析和解决

AI_BING_的博客 1万+

【Python-面向对象】黑马程序员2022-08-08-Python教程12

模具一样,因此生产出来的所有作品特征一样,但作品与作品之间是不一样的。得到的结果是一个内存地址,这个内存地址没什么作用,我们可以使用__str控制这种浪费时间的行为。子类继承父类的成员后,如果对其不满意,那么可以对其进行改造。我们称:类内部的函数为【方法】,以此区分类外部的函数。在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)。多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。设计类,基于类创建对象,由对象做具体的工作。如何将现实世界中的事物,抽象成程序中的类。

wwwvvvnnnmmm的博客 1009

【YOLOv8改进-损失函数】 YOLOv8自带损失函数CIoU / DIoU / GIoU 详解,以及如何切换损失函数

在介绍YOLOv8中的各种Iou之前,我们先来了解了解目标检测中的损失函数。目标检测模型通常包含两类损失函数:类别损失(分类)和位置损失(回归)。这两类损失函数用于检测模型的最后一部分,根据模型的输出(类别和位置)以及实际标注框(类别和位置),分别计算类别损失和位置损失。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 5190

7.6 GPU页表更新机制

本文分析了AMDGPU驱动中BO到VA映射的页表更新实现机制。核心流程通过amdgpu_vm_bo_update()函数触发,支持CPU直接写入和SDMA异步命令两种更新模式。系统根据VRAM可见性自动选择最优更新策略,处理三种主要场景:命令提交、BO迁移和BO销毁。关键实现包括DMA地址数组处理、权限标志合并和BO迁移状态转换,最终通过amdgpu_vm_update_range()完成硬件页表更新。该机制有效平衡了更新延迟与吞吐量,为GPU虚拟内存管理提供基础支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 2468

黑马程序员_面向对象04

------- android培训、java培训、期待与您交流! ---------- 封装和继承已经谈论的差不多了!现在来看看java中最后一个特性多态。 多态: 定义:某一类事物的多种存在形式。 例如:动物中的猫,狗。 猫这个对象对应的类型应该是猫类型。         猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫成为动物。

县令的专栏 375

PCL Alpha Shapes平面点云边界特征提取【2026最新版】

alpha shapes算法用于平面点云的边界特征提取。博客长期更新,本文最近一次更新时间为:2026年4月20日。

点云侠的博客 27万+

黑马程序员|8天Python第13章面向对象

类外面是函数,类里面是方法。self 只是写在这里,传参的时候可以当作不存在。因为 python 定义变量时不声明,才有了这些注解。类 Student ,构建对象 stu。自己定义的时候可以看出来,但是代码一多起来自己就混乱了,目的是让 pycharm 在后面的使用过程中提示这个东西是什么类型的。字典的注解第一个表示 key ,第二个表示 value。使用 random 要导包, 按 alt + 回车键可以自动搜索并导包。选 import this name。里面的数据不规则,有混合的类型。

weixin_74727170的博客 1459

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

黑马程序员总结文档汇总

这篇日志,是这些日子以来观看传智播客视频写的一篇汇总文档,蓝色标识的超链接是doc类型的文档,绿色标识的超链接是思维导图类型的文档,同时两种类型的文档中每篇都提供了文档下载链接,详细内容如下:   黑马程序员 01 Java基础教学 - 01 - 认识Java                                黑马程序员 02 Java基础教学 - 02 - 走进Java

kongbeily的专栏 2143

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

黑马程序员—— Java 基础 面向对象之继承 (复习)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 一、面向对象特征 之 继承 1.理解为什么会出现继承? 当我们将对象用类描述后,发现某一些类中依然存在一些共性的描述,这时我们可以将这些共性的内容提取出来,再定义一个类来单独进行描述,只要让这些类与提 取出来的类存在关系就可以了。 例:我们有两个类 Student

qiancs06的博客 370

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

黑马程序员_java基础学习笔记04_面向对象

------- android培训、java培训、期待与您交流! ---------- 一 面向对象与面向过程 面向过程要求对于每个步骤都亲自参与实现,编程思想就是面向过程,主要编程语言就是C语言.而面向对象是相对于面向过程的,每个功能的实现不需要亲自参与,可以将需要的功能进行封装,然后根据对象来调用每种不同的方法,将复杂的事情简单化,从面向过程的执行者转变为指挥者,这样更贴合

Troy_Fu的博客 1469

黑马程序员_04_面向对象

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------  1.理解面向对象: 面向对象是相对面向过程而言; 面向对象和面向过程都是一种思想; 面向过程强调的是功能行为; 面向对象是将功能封装进对象,强调具备了功能的对象; 面向对象是基于面向过程的

s568615947的专栏 477

黑马程序员——继承和多态

------- Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、继承 在现实世界中,可以看到很多按层次分类的概念。比如,动物分为哺乳动物、爬行动物等。哺乳动物又分为很多小类。整个分类就组成了一个树状结构。 在面向对象中,上一层称为父类,下一层称为子类。继承实现了子类和父类:子类可以使用父类的所有功能,并可以对这些功能进行拓展。 通过继承创

qiuyuhuaihua的专栏 431

黑马程序员——>第七天<面向对象(继承-抽象类-接口)>

-------android培训、java培训、期待与您交流------- 01面向对象(继承-概述) /* 将学生和工人的共性描述提取出来,单独进行描述。 只要让学生和工人与单独描述的这个类有关系,就可以了。 继承: 1.提高了代码的复用性。 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性。 注意:千万不要为了获取其他类的功能,简化代码而继承。 必须是类与类之间有所

orchid_yong的专栏 672

黑马程序员--面向对象的三大基本特征(多态)(04)

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------- 面向对象的三大基本特征:封装 继承 多态。 一. 多态  1.多态相关概念       ① C#面向对象的多态其实就是说同一段代码(操作)作用到不同对象时能有不同的表现形态。       ② 多态作

u010522716的专栏 767

黑马程序员04面向对象概述

一、面向对象思想的简单概述 面向对象是Java基础学习过程中重点的的一部分。从大体上来说,面向对象思想就是基于面向过程的思想,是软件开发过程中使用的一种思维方式。举两个有趣的小实例来简单解释说明一下。 举例: A:比如洗袜子过程,如果要完成这一整件事情,那么我们的过程是:   面向过程:脱了-->泡一泡-->扭一扭-->搓一搓-->漂洗-->晾干   我们如果要偷懒,想简化过程,此时

qrazy的博客 543

黑马程序员前端JavaScript高级——ES6学习笔记

黑马程序员前端教程的PPT和代码学习笔记,里面包含了面向对象的编程思想,以及构造函数,类和对象、原型链、箭头函数、数组和字符串新增方法、函数递归、深拷贝浅拷贝、正则表达式等知识点。本文是对优快云其他博主记录的一个补充,因为黑马也是今年才陆续补充一些知识点的视频的,本文将其收录于此,雷同勿怪。

weixin_44566194的博客 3720

Java后端 学习路线 笔记汇总表【黑马程序员】

Java后端 学习路线 笔记汇总表【黑马程序员】

upward 5677

java基础复习(JavaSE高级)第一章:面向对象高级部分

多态的格式可以为以下两种格式:父类名称 对象名 = new 子类名称();接口名 对象名 = new 实现类名称();我们敲如下代码在这里,people既可以是老师,又可以是学生,体现了对象多态两个人都调用同一个行为run方法,但是同一个run在不同的人下有着不同的反馈,体现了行为多态。三点前提,理解记忆例题:注意B选项,多态确实要有方法重写,但是不重写不会报错的。

qq_74196888的博客 935

黑马程序员_JAVA基础_继承,抽象和接口

01面向对象(继承-概述) /* 将学生和工人的共性描述提取出来,单独进行描述。 只要让学生和工人与单独描述的这个类有关系,就可以了。 继承: 1.提高了代码的复用性。 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性。 注意:千万不要为了获取其他类的功能,简化代码而继承。 必须是类与类之间有所属关系才可以继承。所属关系 is a 。 02面向对象(继承-概

mantuntun123的专栏 430
上一篇: 黑马程序员 03 函数 数组
下一篇: 黑马程序员05 API中的类
绕世界流浪_
博客等级 码龄13年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值