面向对象

面向对象与面向过程

面向对象和面向过程是两种软件开发方法,或者说是两种不同的开发范式。

什么是面向过程?

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想,是一种自顶而下的编程模式。
最典型的面向过程的编程语言就是C语言。

概述

把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。
就是说,在进行面向过程编程的时候,不需要考虑那么多,上来先定义一个函数,然后使用各种诸如if-else、for-each等方式进行代码执行。
最典型的用法就是实现一个简单的算法,比如实现冒泡排序。

什么是面向对象?

面向对象程序设计的雏形,早在出现在1960年的Simula语言中,当时的程序设计领域正面临着一种危机:在软硬件环境逐渐复杂的情况下,软件如何得到良好的维护?
面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。
目前较为流行的面向对象语言主要有Java、C#、C++、Python、Ruby、PHP等
面向对象是一种将事务高度抽象化的编程模式

概述:

将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。
就是说,在进行面向对象进行编程的时候,要把属性、行为等封装成对象,然后基于这些对象及对象的能力进行业务逻辑的实现。
比如:想要造一辆车,上来要先把车的各种属性定义出来,然后抽象成一个Car类。

类和对象

类是用来描述同一类事物的共性信息的。在类中,成员变量表示事物的属性,函数表示事物的功能。类中某一具体的事物信息用对象描述。对象是通过类创建的,先有类,然后才有对象。

成员变量和局部变量

成员变量:直接定义在类中的变量
局部变量:定义在类中局部位置的变量

就近原则:函数中使用一个变量,首先在函数中找有没有定义这个变量,有就使用函数中定义的,没有再去上一层找。

区别:

1、定义的位置:成员变量在类中,局部变量在函数里面
2、内存:成员变量在堆内存,局部变量在栈内存
3、生命周期:成员变量从创建对象开始分配空间开始,当对象变成垃圾空间被回收结束;局部变量从函数进栈开始,到函数出栈结束。
4、使用范围:成员变量作用在整个类中,局部变量仅限定义的局部范围
5、初始值:局部变量没有默认值,使用前必须先要初始化。

匿名对象

创建对象后,不将引用赋值给任何变量。虽然没有变量持有它的引用,但是对象被创建出来的时候,自己是知道自己的引用的,这个时候可以使用。一般匿名对象作为参数传递。

private

介绍
私有的意思,是一个权限修饰符,只能在本类中使用。可以修饰类中的成员。
将对象的属性或者是行为隐藏(private)起来,对外提供公共的(public)访问方式。

公共的访问方式:即就是给属性提供两个方法,一个是设置方法一个是获取方法。
Eg : public void setXxx( int a){}
public int getXxx(){ }
Xxx通常是属性名,这样起名字很直观
不这样起名字也是可以的,建议这样起名字。

好处
提高了安全性
Java语言有一个特点,“就近原则”。

构造器

构造器(构造方法):是JVM在创建对象时,自动调用的函数。给对象的成员变量赋初始值。

普通方法格式:

 修饰符  返回值类型  方法名(参数列表){   
	语句; 
	return  返回值
}

构造方法格式:

修饰符   类名(参数列表){   
	语句; 
}
注意: 1、没有返回值类型,即修饰符和方法名中间什么都没有,不能被static修饰
	2、方法体中不能出现‘’return  返回值;”,偶尔可以出现“return;”
	3、方法名必须和类名一样

如果类中没有定义构造方法,那么系统会提供一个构造方法public 类名(){},目的是可以创建对象。如果类中定义了构造方法,那么系统不再提供,以定义的构造方法为准则,创建对象。

对于一个对象来说,构造方法只执行一次,普通方法可以被多次调用执行。

创建对象的大概过程:

1、遇到new关键字,在堆内存中开辟空间,得到一个内存地址;
2、将类的所有成员变量加载到这个内存空间中;
3、给加载到内存中的成员变量赋默认值;
4、根据new关键字后面的内容,找到对应的构造函数,然后构造函数进栈执行。1-3被称为隐式三步
5、构造函数执行完毕,出栈,对象创建完成

使用细节:

  1. 私有的构造函数,不能被外界使用
  2. 构造函数可以调用一般函数,反之不能
  3. 构造函数可以相互调用,使用this关键字实现
  4. 使用this调用其它构造函数,this语句必须写在构造函数的第一行
  5. 构造函数不能交叉调用

this和super:

1.this:
a)代表当前类的对象的引用
b)调用当前类的重载构造方法

2.super:
a)代表的是父类引用

Static

修饰符,静态的意思,可以修饰类中的成员。
静态内容,存储在方法区的静态区域。

修饰变量:

称之为:静态变量,类变量

特点:
1.静态内容随着类的加载而存放到内存中随着类的消失而消失。
2.被所有对象所共享
3.优先于对象存放到内存中
4.生命周期长

两种访问方式:
类名.静态变量名 建议使用
对象名.静态变量名

什么时候用静态修饰变量?
数据被所有对象共享时,可以使用。

修饰方法:

称之为:静态方法,类方法
修饰符  返回值类型   方法名(参数列表){ …return  返回值;}	
修饰符是没有顺序之分的,一定要写在返回值类型的前边。

两种访问方式:
类名.静态方法名() 建议使用
对象名. 静态方法名()

什么时候方法用static修饰?
如果这个类是工具类,通常情况下类中的方法都是静态方法。

工具类最好生成一个帮助文档
javadoc -d 目录 工具类名.java
帮助文档通常称为API。
API: application programming interface 应用程序接口

注意

静态访问局限:
1.静态只能访问静态,不能访问非静态
2.非静态的既能访问静态也可以访问非静态。
3.静态方法中不能出现this和super。

静态变量和成员变量的区别:
1.都是定义在类中的
2.存放内存位置不同,静态变量存放在方法区的静态区域。
成员变量随着对象创建存放在堆中。
3.静态变量随着jvm退出然后释放;成员变量随着对象的垃圾回收释放。

代码块:

指的就是用一对大括号括起来

局部代码块
定义在方法中,作用就是控制某个变量的作用域,当代码块执行完该变量在内存中释放。

静态代码块
格式:

static{
	语句;
}

定义在类中,作用是用于给类或者是静态变量进行初始化,只执行一次
在类加载的最后一步,自动执行;类加载肯定早于创建对象,所以静态代码块早于构造代码块。

类加载,会把类的成员加载到方法区,其中非静态成员加载到非静态区域,静态成员加载到静态区域。
静态成员加载顺序

1、首先加载所有静态成员
2、顺序给所有静态成员赋默认值
3、顺序给所有静态成员变量显示赋值和执行静态代码块
4、一般为了保证执行顺序,会把静态代码块写在静态成员变量下边

构造代码块
定义在类中,作用用于给所有对象进行统一初始化
构造代码块优先于构造方法执行
如果类中定义了构造代码块,创建对象时都会去执行
类中可以定义多个构造块,执行顺序取决于代码块的位置,从上到下去执行.对象的成员变量显示赋值,和构造代码块优先级一样

super();//0!执行顺序最早
构造函数//4
{
	语句//1
}
int a = 100;//2
{
	语句//3
}

同步代码块: 参见线程技术

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值