黑马程序员--java面向对象的理解

2022黑马程序员Java学习路线图 原文转自:2022黑马程序员Java学习路线图 入门:Java SE基础-->Java Web(含数据库+H5+js+vue)中级:Maven-->Git-->SSM框架 -->MybatisPlus-->Spring Boot-->传智健康【项目实战】--> 瑞吉外卖【项目实战】进阶:Spring Cloud(微服务开发,学这一套就够了) 也可分技术点学: (Dubbo-->Zookeeper-->RabbitMQ-->RocketMQ-->Docker-->Redis -->MongoDB-->搜索 阅读详情

------- android培训、java培训、期待与您交流! ----------

理解面向对象的思想,首先我们需要知道在理解面向对象时需要知道的几个名词:对象、类。

 

对象: 

对象是人们要进行研究的任何事物,从简单的一个小分子到复杂的汽车飞机都可以看做对象,只是有时对象要根据人们研究问题的需要来确定,对象不一定是具体的,有时也可以表示抽象的规则或计划。

 

类: 

   类在java中是具有相同或相似性质的对象的抽象体现形式。也就是说,类的实例化就是创建对象的过程类的实例就是对象。


示例:

class Car
{
	String color = "红色";//描述车的颜色
	int num = 4;//描述轮胎数
	
	//车的行为
	void run()
	{
		System.out.println(color+"  "+num);
	}
}
class CarDemo 
{
	public static void main(String[] args) 
	{
		//生产汽车,通过new操作完成。
		Car c = new Car();
		c.run();
	}
}

面向对象与面向过程的区别

面向过程:是一种以“事件”为中心的编程思想。

面向对象:是一种以“事物(即对象)” 为中心的编程思想。

比如要写一个“斗地主”的程序,面向过程的思维可能是“斗地主”为一个件,每局开始时进行发牌,通过出不同的牌可以得到不同的结果;而面向对象的思维可能是要进行斗地主,必须要有三个人,人的对象,具有对牌进行操作的行为;每一张牌本身又是一个对象,具有大小和花色的属性;整副牌还可以是一个对象;整个斗地主这件事物也是一个对象。


面向对象的四大特征

一、继承

1、Java的继承是通过extends关键字来实现的,实现继承的类称为子类,被继承的类称为父类,也称为基类或超类。

2、Java中是单继承,一个子类只能有一个父类。

3、父类和子类的关系,是一种一般和特殊的关系。如:水果和苹果的关系,苹果继承了水果,苹果是水果的子类,则苹果是一种特殊的水果。

4、关于继承的几点注意:

①父类有的,子类也有

②父类没有的,子类可以增加

③父类有的,子类可以改变

④构造方法不能被继承

⑤方法和属性可以被继承

⑥子类的构造方法隐式地调用父类的不带参数的构造方法

⑦当父类没有不带参数的构造方法时,子类需要使用super来显式地调用父类的构造方法,super指的是对父类的引用


二、多态

1、多态:用我们通俗易懂的话来说就是子类就是父类(猫是动物,学生也是人),因此多态的意思就是:父类型的引用可以指向子类的对象。

2、方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,派生类与基类间有IS-A的关系(即"猫"is a"动物")。这样做虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制,所以,Java引入了多态性的概念以弥补这点的不足,此外抽象类和接口也是解决单继承规定限制的重要手段。同时,多态也是面向对象编程的精髓所在。

3、在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同,这种现象称为类的多态。类的多态性体现在两方面:一是方法的重载上)包括成员方法和构造方法的重载;二是在继承过程中,方法的重写。多态性是面向对象的重要特征。方法重载和方法覆写实际上属于多态性的一种体现,真正的多态性还包括对象多态性的概念。

4、对象多态性主要是指子类和父类对象的相互转换关系。

a)向上类型转换:比如说将Cat类型转换为Animal类型,即将子类型转换为父类型。对于向上类型转换,不需要显式指定。

b)向下类型转换:比如将Animal类型转换为Cat类型,即将父类型转换为子类型。对于向下类型转换,必须要显式指定(必须要使用强制类型转换)。

 

三、抽象

 

1、抽象类:使用了abstract关键字所修饰的类叫做抽象类。抽象类无法实例化,也就是说,不能new出来一个抽象类的对象(实例)。抽象方法:使用abstract关键字所修饰的方法叫做抽象方法。抽象方法需要定义在抽象类中。相对于抽象方法,之前所定义的方法叫做具体方法(有声明,有实现)。

2、如果一个类包含了抽象方法,那么这个类一定是抽象类。

3、如果某个类是抽象类,那么该类可以包含具体方法(有声明、有实现)。

4、如果一个类中包含了抽象方法,那么这个类一定要声明成abstract class,也就是说,该类一定是抽象类;反之,如果某个类是抽象类,那么该类既可以包含抽象方法,也可以包含具体方法。

5、无论何种情况,只要一个类是抽象类,那么这个类就无法实例化。

6、在子类继承父类(父类是个抽象类)的情况下,那么该子类必须要实现父类中所定义的所有抽象方法;否则,该子类需要声明成一个abstract class.

7、当使用abstract修饰类时,表明这个类只能被继承;当作用abstract修饰方法时,表明这个方法必须由子类提供实现(即重写),而final修饰的类不能被继承,final修饰的方法不能被重写,因此final和abstract永远不能

 

四、接口 

1、Java接口中的成员变量默认都是public, static, final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)

2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化

3、Java接口中只能包含public, static, final类型的成员变量和public,abstract类型的成员方法

4、接口中没有构造方法,不能被实例化

5、一个接口不能实现((implements)另一个接口,但它可以继承多个其它的接口

6、Java接口必须通过类来实现它的抽象方法:public class A implements B{...}

7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的

8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例

9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.


------- android培训、 java培训、期待与您交流! ----------
WPS中VBA支持库安装全攻略:从报错到一键解决 VBA作为Office生态中广泛使用的宏语言,是办公自动化的重要基础。WPS表格虽然兼容Excel文件格式,但出于技术路线与授权原因,默认并未集成完整的VBA引擎与开发环境,导致用户打开含宏文件时频繁遇到“找不到工程或库”“未找到VBA支持库”等报错。理解VBA支持库包含引擎与IDE两层结构,并掌握系统位数、版本匹配、安全软件拦截等前置条件,是成功部署的关键。通过可靠的安装源与规范流程完成配置后,即可实现在WPS中运行Excel宏、批量处理数据、自定义函数等自动化场景,显著提升报表处理效率。本文围绕WPS中 阅读详情

相关推荐

Windows下OpenMBEE项目MMS部署失败经历及改正

在Github里找到了上面的第一份文档,下载了MMS源代码(不知道为什么这个代码跟上面操作克隆得到的MMS代码不一样?好像是因为Gradle的版本问题,我本地之前已经安装过7.6.4的Gradle了,于是我找到gradle-wrapper.properties文件。后面在VScode中运行了一下依然是报这个错误,我在VScode终端直接执行。不知道为什么依然没什么用。打开“Windows PowerShell”。(如果是第一次运行它,将看到更长的输出)导航到要克隆存储库的文件夹,例如,

Yo_lan_da的博客 1869

黑马程序员--Java入门之面向对象的理解

面向对象是什么?为什么要面向对象?面向对象能带来什么好处呢?面向对象就是万能的吗? 带着这些疑问我们一起走进面向对象的大门! 我们切不说面向对象的三大特征(封装、继承、多肽),举个例子,如果你是大学生,想想你们宿舍的模样,是不是第一反应就是一个字“乱”?是不是墙角下一个垃圾桶,但是却很少看见它的模样,平时垃圾都堆满了,桌子上,床底下一大堆没写名字的书,平时都随手拿去上课,勉强找个地方放个电脑,

这条街是我的 739

Altium Designer操作技巧(1)——原理图中如何批量替换元器件?

《AltiumDesigner批量替换元器件技巧分享》摘要:本文介绍了两种在AltiumDesigner中批量替换元器件的实用方法。方法一通过“查找相似对象”功能,可精准匹配并批量修改器件参数;方法二利用ActiveBOM功能,在BOM表中直观操作器件替换,推荐使用第二种方法可使BOM管理更高效。这些技巧能有效减少物料种类、降低贴装成本,特别适用于电阻电容等常用器件的批量替换。关注公众号获取更多电子设计技巧。

u012526819的博客 2582

黑马程序员_java面向对象理解

---------android培训、java培训、期待与您交流! --------- java面向对象主要分为四个部分: 封装(Encapsulation):使用方法把类的数据隐藏起来,遵循了java 一切皆为对象的基本概念和核心思想,达成对类的封装,让普通类型上升为对象级;封装控制用户对类的修改和访问数据的程度,增强了程序的可维护性。 继承(Implementation):发生在类和类之

jkl123357741的专栏 710

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2408

手把手教你用示波器测试DDR5 DRAM信号完整性(附眼图分析技巧)

本文详细介绍了如何使用示波器测试DDR5 DRAM信号完整性,包括眼图分析技巧。从DDR5的核心挑战、测试设备选型到实测工作流程,提供了全面的指导。特别强调了DFE功能验证和系统级协同测试,帮助工程师解决信号完整性问题,提升测试效率。

g2h3i4j5的博客 1152

黑马程序员_java 面向对象的理解

------- android培训、java培训、期待与您交流! ---------- 1.1理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程:强调的是功能行为 面向对象:将功能封装进对象,强调具备了功能的对象面向对象是基于面向过程的 [java] view plaincopy

fengli_520的博客 350

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

黑马程序员java学习日记九 面向对象的理解

1. 理解面向对象    (1) 类:是对现实生活中事物的描述         对象:对这类对象事物,实实在在的个体    (2) 面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向过程强调的是功能行为,面向对象是将功能进行封装,强调具备了功能的对象。    (3) 当多个引用指向同一个对象时,那么他们的内存地址值是相同的;在内存中,成员变量存在于堆内存,而局部变量存在于栈内

u011532797的专栏 596

Webug4.0 打靶笔记

一、Webug 的安装 (1)基本信息 WeBug 名称定义为”我们的漏洞”靶场环境 ,基础环境是基于 PHP/mysql 制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。在 webug3.0 发布后的四百多天 226安全团队终于在大年初二发布了 webug 的 4.0 版本。 (2)虚拟机的安装 最新超详细VMware虚拟机下载与安装_隐

m0_60716947的博客 6127

智能车图像处理2-入门级分析1 ---基础扫线

PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。

taiyuezyh的博客 7747

黑马程序员--Java面向对象理解

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------ 1.1 面向对象概念1.1.1 面向对象概念 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解

sa_leon的博客 548

8-阿里云服务器 ECS配置R及Studio Server

步骤概览:(首先要明确自己的系统然后进行安装)

hx2024的博客 1572

黑马程序员--理解JAVA面向对象

------- android培训、java培训、期待与您交流! ----------   对象就是程序里的一些东西, 例如StringBuffer, 它们实现了某些我们需要的功能, 例如append()和reverse() 当我们需要某个功能时就可以使用这样的对象来帮我们完成, 例如需要存储若干数据, 需要反转数据的排列 例如我们想将一段字符串发送到别人的电脑上, 那么找到一个可

zhaoyanbing的专栏 381

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

黑马程序员——Java基础之面向对象的相关概念及个人理解

------- android培训、java培训、期待与您交流! ---------- 1 基本概念:面向对象、类、对象 面向对象的解释有很多种,在这里以实例为参照,简单总结下我个人的理解:比方说,我们渴了,就要烧水喝这件事,很明显,这件事的完成涉及多个对象,我自己、水、烧水的水壶等; 我要烧水的时候,通常将水壶装满水,插上电,烧开就好了。这个烧开水的过程并不是由我完成的,而是交给了水壶和电

hu121618hu的专栏 544

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

黑马程序员_java面向对象相关 个人理解

------- android培训、java培训、期待与您交流! ---------- 以下仅为个人平时学习笔记,可能有有错误的地方,希望有看到者提出来,共同讨论,谢谢! 1.继承   并不仅仅是为了简化代码,提高复用而继承。更重要的原因是本身类与类之间就有一定的关系,可以通过继承更好的表示出类与类本来的关系(有了关系,进而出现多态)。(类本来就是现实中具体事物抽象出来的)   将各个

fengpanyunhaitian的专栏 286

java学习日记:【黑马程序员】的面向对象综合训练,文字版格斗游戏;理解面向对象和JavaBean类

使用JavaBean类感受面向对象思想,进行的简单练习。

xuefengbin的博客 1486

黑马程序员-Java基础知识预备之Java面向对象的理解(part1)

----------- android培训、java培训、期待与您交流!------------此博文涉及的主要知识点: 1.理解面向对象 2.类与对象的关系 3.匿名对象 4.封装概述 5.构造函数 6.对象加载 7.this关键字 8.static关键字 9.静态的应用 10.main函数 11.类的访问权...

weixin_33937913的博客 152

黑马程序员--Java基础学习三(对面向对象的理解)

1.面向对象的定义,特征 1.1面向对象不仅要定义对象的属性,而且需要定义该对象的方法,如抽象车这个类,则需要定义车的长、宽、高属性外,还需要定义启动车引擎等方法。 1.2面向对象的三大特征 封装  (Encapsulation)  : 继承  (Inheritance):Java继承是使用已存在的类的定义作为基础建立新类的技术,继承避免了对一般类和特殊类之间共同特征进行的重复描述

BlueSky_YL1989的专栏 330

黑马程序员-Java基础知识预备之Java面向对象的理解(part2)

--------- android培训、java培训、期待与您交流!----------本博文涉及的主要内容: 1.继承 2.重写(覆盖)父类的方法 3.super关键字 4.多态 5.final修饰符 6.抽象 7.接口一、继承1、Java的继承是通过extends关键字来实现的,实现继承的类称为子类,被继承的类称为父类,也称为基类...

weixin_33774615的博客 151

黑马程序员__java基础视频day5

---------------------- android培训、java培训、期待与您交流! ---------------------- 第五天的视频是分两天看的,感觉看视频也是需要毅力的,当然啦时间也是十分重要的,想起接下来要交的作业就有些惶恐啊,视频怕是又要停几天了。第五天的视频主要讲的就是面向对象,其实我们现在用的都是面向对象编程了,本来想着这一天的就算了,没必要总结了,但是看看自己记

lisi0221的专栏 988

黑马程序员Java零基础视频教程_上部P128面向对象进阶-08-继承中的构造方法和thissuper关键字 作业

黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)共计200条视频,包括:Java入门-01-Java学习介绍、Java入门-02-人机交互-图形化界面的小故事、Java入门-03-打开CMD等,UP主更多精彩视频,请关注UP账号。黑马程序员Java零基础视频教程_上部(Java入门,含斯坦福大学练习题+力扣算法题和大厂java面试题)_哔哩哔哩_bilibili。AdminStaff类。Maintainer类。

weixin_72078571的博客 486

我待Java如初恋

我待Java如初恋 面朝大海,春暖花开。我待Java如初恋。 在来到黑马程序员培训之前,对于编程是一种完全不了解的状态,以前看到一段代码全是英文字母,根本都不懂写的是什么东西,更不知道它们的作用是什么意思,觉得一个程序员能把这么多的代码写出来非常难,感觉是一个特别了不起的工作,也就有一种敬佩之心,很好奇程序到底是怎么写出来的,所以打算亲自上阵学习一番,通过朋友的介绍,选择来到黑...

qq_39581763的博客 179

黑马的JAVA学习路线--详解JAVA部分的学习

黑马程序员整理了新版学习路线图,内容涵盖从小白---->大厂java工程师!(这个要看,现在基本上面试必备)也可分技术点学: (必须要学的课程也没有变。

dearmite的专栏 7万+

黑马程序员-JAVA笔记(从面向对象进阶开始)持续更新

Java黑马提高篇笔记。

f593256的博客 1879
上一篇: 黑马程序员--java常用的四种排序
下一篇: 黑马程序员--java单例设计模式
macover
博客等级 码龄12年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值