一张图清晰明了将Java面向对象全部搞定!
大家都知道,Java面向对象是Java的一个核心,也是初学者的一个难点,所以我们从这里开始,Let’s go !
1、面向对象(Oriented Object)
是相对于面向过程而言的,过程其实就是函数,对象是将函数和属性进行了封装。
1)将复杂的事情简单化。
2)面向对象将以前的过程中的执行者,变成了指挥者。
3)面向对象思想是符合人们思考习惯的一种思想。
2、面向对象和面向过程区别
面向过程:事物比较简单,可以用线性的思维去解决。
- 面向对象:事物比较复杂,使用简单的线性思维无法解决。
- 共同点:都是解决实际问题的一种思维方式。
解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理。
3、对象
接收消息的实体,一切皆为对象,对象都有属性和行为,对象都属于某个类,每个对象都是独一无二的。
4、类
创建对象的蓝图和模板
类的属性:数据抽象
类的方法:行为抽象
构造器(构造方法)
5、接口
抽象方法的集合
1)作用:
- 能力,实现一个接口就代表具备了某方面的能力。
- 约定,一个类实现了接口就必须实现接口中的所有抽象方法否则要被声明为抽象类。
- 角色,一个类可以实现多个接口来扮演多种角色
2)接口之间可以继承而且支持多重继承
3)从Java 8开始接口中的方法允许有默认实现
4)常见的接口用法
- 单方法接口(函数式接口):Lambda表达式、@FunctionalInterface
- 标识性接口
- 普通接口
- 常量接口(接口最不正确的用法)
6、Java面向对象语言的三大特点
继承:从已有类创建新类的过程。
父类(超类/基类):提供继承信息的类
子类(派生类):得到继承信息的类
封装:隐藏一切可隐藏的实现细节提供简单的编程接口。私有属性,公有方法。好处:将变化隔离;便于使用;提高重用性,安全性。
多态:
方法重写:子类对父类的方法给出自己的实现版本。
对象造型:用父类型的引用去引用子类对象。
7、成员
定义在类中。成员有两种:
1)成员变量:其实对应的就是事物的属性。
2)成员函数:其实对应的就是事物的行为。
8、局部变量和成员变量的区别
1)成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
2)成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3)成员变量定义在堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。
9、构造函数
用于给对象进行初始化 ,函数中的一种。构造函数是在对象创建时被调用的,而且 初始化动作只执行一次 。
特点:该函数的名称和所在类的名称相同。不需要指定返回值类型。该函数没有具体的返回值。
注意:在定义一个类的时候,如果没有定义一个构造函数,系统会自动生成一个无参构造函数,以便于该类对象的创建和初始化。
如果类中自定了构造函数,那么默认的构造函数没有了。
如果一个类中有多个构造函数,这些构造函数是以重载体现的。
10、构造代码块和构造函数的区别
构造代码块:是给所有的对象进行初始化 ,只要对象一建立就会调用这个代码块。
构造函数:是给与之对应的对象进行初始化。
11、创建一个对象内存中执行过程
Person p = new Person();
1)将硬盘中指定位置的Person.class文件加载进内存。
2)执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量P。
3)new。在堆内存中开辟一个实体空间,分配了一个内存首地址值。
4)在该实体空间中进行属性的空间分配,并进行了默认初始化。
5)对空间中的属性进行显示初始化。
6)进行实体的构造代码块初始化。
7)调用该实体对应的构造函数,进行构造函数初始化。
8)将首地址赋值给p,p变量就引用了该实体。(指向了该对象)
12、this关键字
代表对象。就是所在函数所属对象的引用。哪个对象调用了this所在的函数,this就代表哪个对象。
this是方法(除静态方法外)中存在的隐式参数,所以在方法中使用this。
普通方法中,this总是指向调用该方法的对象。this.xx; (调用的是成员属性和成员方法)
构造方法中,this总是指向正要初始化的对象。this(…); (调用本类对应参数的构造函数)
注意:
1)this调用构造函数,必须定义在构造函数的第一行。否则编译失败。
2)this不能用于static修饰的方法。
13、static关键字
关键字,是一个修饰符,用于修饰成员(成员变量和成员函数)
在类中,用static声明的成员变量为静态变量,或者叫做:类属性,类变量, 从属于类,给对象分配的内存里没有。
它为类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显示初始化,对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享。
可以使用“对象.类属性”来调用。不过,一般都是用“类名.类属性”。
static变量置于方法区中。
用static声明的方法为静态方法。
类名.方法名的方式调用。
在调用该方法时,不会将对象的引用传递给它,所以在static方法中,不可访问非static的成员。
在静态方法中,不能是用this和supper关键字。
这里说一下 如果在学习中遇到有什么问题 方便关注并私信与我(Q群217799417) 帮你解决相关的学习困难 共同讨论学习方法
14、成员变量和静态变量的区别
1)成员变量所属与对象,所以也称为实例变量。
静态变量所属于类,所以也称为类变量。
2)成员变量存在于堆内存中。
静态变量存在于方法区中。
3)成员变量随着对象的创建而存在,随着对象被回收而消失。
静态变量随着类的加载而存在,随着类的消失而消失。
4)成员变量只能被对象所调用。
静态变量可以被对象调用,也可以被类名调用。
所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
15、静态代码块
就是一个有静态关键字标示的一个代码块区域。定义在类中。
作用:可以完成类的初始化 。静态代码块随着类的加载而执行,而且只执行一次。
如果和主函数在同一个类中,优先于主函数执行。
静态代码块、构造代码块、构造函数同时存在时的执行顺序
静态代码块–>构造代码块–>构造函数。
16、继承
1)类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。
2)提高代码的复用性。
3)extends的意思是“扩展”。子类是父类的扩展。
4)子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)。
5)Java中只有单继承,没有多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。
6)Java中的多继承,可以通过接口来实现。
7)java.lang.Object是所有类的超类。
17、重载(overload)
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
同一个类,同一个方法名。
不同:参数列表不同(类型,个数,顺序不同)
只有返回值不同,不构成方法的重载。
18、方法重写(override)
在子类中可以根据需要对从父类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。(由于多态)
本文来自千锋教育,转载请注明出处。
一张图清晰明了将Java面向对象全部搞定!相关推荐
- Servlet的体系结构(一张图清晰明了)
- 读取、回收和重用:使用 Excel、XML 和 Java 技术轻松搞定报告,第 2 部分
本周您推脱老板的 #432 创新理由了吗?您是否尝试过推脱? 本系列的其他文章 读取.回收和重用:使用 Excel.XML 和 Java 技术轻松搞定报告,第 1 部分 有幸的是,您不必推脱.本系列的 ...
- Java三行代码搞定MD5加密
Java三行代码搞定MD5加密 https://www.dexcoder.com/selfly/article/4026 public class MD5Test {public static voi ...
- 软件开发文档整理(之)一张示意图 | 清晰明了
在整个软件开发周期,开发文档是必不可少的资料,它们贯穿于整个开发周期,用来评估计划.规划进度.项目管理.软件测试.软件发布,可以说至关重要. 开发文档必须归档,没有归档的文档作用大打折扣,时效 ...
- 各种门平面图画法_门表图怎么画?4步就搞定!
详解门表图怎么画 谈到门表图,很多设计师并不陌生,但是又不是那么熟悉,有的新人甚至认为门表就仅仅只是excel上的编号信息或者绘制的节点装饰门节点,因此:今天咱们就来扒一扒门表图. 1.门表图是对一个 ...
- 原型和原型链的理解(有图清晰明了)
记住一句话:万物皆对象 对于原型和原型链,我们要知道一下几个:函数对象,实例对象.原型对象 1)函数对象--就是平时称的对象: 2)实例对象--new出的对象或者{ }: 3)原型对象--所有的函数对 ...
- 自学java的难度_自学java难不难 搞定这十三步就够了
自学java难不难,对不同的人来说可能不一样,有着编程基础的来说,相对容易.如果是完全小白,就会稍微困难点,下面总结了十三步来自学java的步骤. 第1步:自学JAVA的开发环境配置.开发首个Java ...
- List 如何根据对象的属性去重?Java 8 轻松搞定!
欢迎关注方志朋的博客,回复"666"获面试宝典 一.去除List中重复的String public List<String> removeStringListDupli ...
- excel怎么设置打印区域_Excel数据太多,无法完整打印在一张纸上?你这样设置即可搞定...
日常生活中,相信很多人都会遇到这样的问题:在打印Excel表格的时候,由于表格里的数据太多了,导致了Excel表格过大,无法将其完整打印在一张纸上.那么这个时候我们要怎么办呢? 其实,想要将Excel ...
最新文章
- 知乎热议20年科研怪状:为何论文创新性越强越难发表,跟风修修补补反而更容易发?...
- unity如何停止不用字符串方式开启协程的方法
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
- python3数据类型:Tuple(元组)
- 解决在freemarker中报空问题
- 新版gitbook导出pdf
- [Vue warn]: Cannot find element: #main
- xcode工程编译错误:The maximum number of apps for free development profiles has been reached.
- linux文件管理器thunar,文件管理器:Nautilus,Thunar,PCManFM,Konqueror,Dolphin,Krusader
- BXP因为时间错误而丢失license的修复方法(转)
- c语言输出99乘法表的思路,C语言输出99乘法表
- “人类高质量数据”如何训练计算机视觉模型?
- 福建地区市场份额最大的调查研究咨询公司
- Python字符串和列表常用的方法和操作
- 008 使用MyBatis,easyUI实现CRUD操作样例-CUD(CRUD完毕)
- MySQL——事务(Transaction)详解
- web前端学习之———互联网与HTML篇
- WebAssembly 在白鹭引擎5.0中的实践
- 用python写一个有AI的斗地主游戏(二)——简述后端代码和思路
- java创建user类在哪里_java中创建对象有哪几种方式
热门文章
- 05 | REST消息通信:如何使用 OpenFeign 简化服务间通信
- DTO数据传输对象详解
- Spring集成web环境(使用封装好的工具)
- Windows——桌面快捷键Ctrl+Z撤销的文件恢复解决方案
- Applese 填数字
- ajax请求返回json实例,Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
- android与html注册登录,Android登录注册源码
- Python基础day05【函数应用:学生管理系统、拆包、今日总结】
- Request和Response-学习笔记01【Request_原理和继承体系、Request_获取请求数据】
- phpstorm配置Xdebug