目录标题
- 一:面向对象思想
-
- 1.定义:
- 2.核心特点:
- 二: 类与对象
-
- 1.基本概念
-
- ①类
- ②对象:
- 2.对象内存解析
- 3. 类的成员
-
- ①.成员变量( 属性 field(字段,域))
- ② .方法(函数,method)
- ③.对象数组的使用
- 四:再谈方法:
-
- 1.方法的重载
- 2.可变个数形会的方法
- 3.方法的值传递机制
- 3.递归方法
一:面向对象思想
1.定义:
- 面向对象编程的两个核心概念:类(Class)、对象(Object)
- 面向过程编程(POP) vs 面向对象编程(OOP)
面向过程:
- 以为组织单位。
- 是一种“”,适合解决简单问题。扩展能力差、后期维护难度较大。
面向对象:
- 以为组织单位。每种事物都具备自己的和。
- 是一种“”,适合解决复杂问题。代码扩展性强、可维护性高。
即:人把大象装进冰箱
讯享网2.核心特点:
1.封装:将数据和操作数据的方法绑定在一起,隐藏对象的属性和实现细节。
2.继承:子类可以继承父类的特征和行为,实现代码复用。
3.多态:允许不同类的对象对同一消息做出响应。
二: 类与对象
1.基本概念
①类
A 定义:具有相同特征的事物的抽象描述,是抽象的、概念上的定义。
B 关键字:class。
C 创建类的语法:
讯享网
②对象:
A 定义:实际存在的该类事物的每个个体,是具体的,因而也称为实例,类的一个实例。
B 关键字:new 。
C 创建对象语法:
java面与对象基础
D 对象调用属性或方法
讯享网
图示:

2.对象内存解析
举例:
内存解析图:

解析:
栈:主要存放的是产生的局部变量(包括基本类型和对象引用)以及方法调用所需的其他信息。当方法执行完毕后,相应的栈帧及其包含的信息会被销毁,从而释放栈空间。(包括main方法,与你自定义的方法)
堆:凡是 new 出来的结构(对象、数组)都放在堆空间中。 对象的属性存放在堆空间中。
注意:
- 创建一个类的多个对象(比如 p1、p2),则每个对象都拥有当前类的一套"副本"(即属性)。当通过一个对象修改其属性时,不会影响其它对象此属性的值。
- 当声明一个新的变量使用现有的对象进行赋值时(比如 p3 = p1),此时并没有在堆空间中创建新的对象。而是两个变量共同指向了堆空间中同一个对象。当通过一个对象修改属性时,会影响另外一个对象对此属性的调
用。
3. 类的成员
①.成员变量( 属性 field(字段,域))
A. 如何声明:
说明:
– 位置要求:必须在类中,方法外
– 修饰符 2
• 常用的权限修饰符有:private、缺省、protected、public
• 其他修饰符:static、final
– 数据类型
• 任何基本数据类型(如 int、Boolean) 或 任何引用数据类型。
– 成员变量名
• 属于标识符,符合命名规则和规范即可。
– 初始化值
• 根据情况,可以显式赋值;也可以不赋值,使用默认值
B.举例:
C.成员变量 vs 局部变量

- 相同点:
变量声明的格式相同:数据类型 变量名 = 变量值
变量都有其有效的作用域。出了作用域,就失效了。
变量必须先声明,后赋值,再使用。 - 不同点:
①. 类中声明的位置的不同:
②. 在内存中分配的位置不同:
③. 生命周期:
④. 作用域:
⑤. 是否有默认值:
注意:对于方法的形参而言,在调用方法时,给此形参赋值即可。
② .方法(函数,method)
A. 定义:
方法是类或对象行为特征的抽象,用来完成某个功能操作。在某些语言中也称为函数或过程。
将功能封装为方法的目的是,可以实现代码重用,减少冗余,简化代码 。
Java 里的方法不能独立存在,所有的方法。
B.声明方法的语法格式
C.调用实例方法
- 方法调用语法格式:
- 举例:
- 注意:
(1)必须先声明后使用,且方法必须定义在类的内部
(2)调用一次就执行一次,不调用不行。
(3)方法中可以调用类中的方法或属性,不可以在方法内部定义方法。
4.关键字 return 的使用 :
– 作用 1:结束一个方法
– 作用 2:结束一个方法的同时,可以返回数据给方法的调用者
注意点:在 return 关键字的直接后面不能声明执行语句
③.对象数组的使用
A.定义:数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用类型中的类时,我们称为对象数组。
B.例如:
定义类 Student,包含三个属性:学号 number(int),年级 state(int),成绩
score(int)。 创建 20 个学生对象,学号为 1 到 20,年级和成绩都由随机数确
定。
问题:打印出 3 年级(state 值为 3)的学生信息。
生成随机数:Math.random(),返回值类型 double;
C.注意:
对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个
元素对象,如果不创建,数组的元素的,所以很容易出现空指
针异常 NullPointerException。
四:再谈方法:
1.方法的重载
B.特点:,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
C.重载方法调用:JVM 通过方法的参数列表,调用匹配的方法。
– 先找个数、类型最匹配的
– 再找个数和类型可以兼容的,如果同时多个方法可以兼容将会报错
D.举例:
2.可变个数形会的方法
C.特点:
1.可变参数:方法参数部分指定类型的参数个数是可变多个:0 个,1 个或多个可变个数形参的方法与同名的方法之间,彼此构成重载
2.可变参数方法的使用与方法参数部分使用数组是一致的,二者不能同时声明,否则报错。
3.方法的参数部分有可变形参,需要放在形参声明的最后
4.在一个方法的形参中,最多只能声明一个可变个数的形参
D.例如:
3.方法的值传递机制
- 形参和实参
形参:在方法时,方法名后面括号()中的变量称为形式参数,简称形参。
实参:在方法时,方法名后面括号()中的的值/变量/表达式称
为实际参数,简称实参。 - 参数传递机制:值传递
Java 里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
形参是数据类型:将实参基本数据类型变量传递给形参
形参是数据类型:将实参引用数据类型变量传递给形参. - 举例
1、形参是基本数据类型
内存解析:
2、形参是引用数据类型
内存解析:

3.递归方法
说明:
递归方法包含了一种隐式的循环。
递归方法会重复执行某段代码,但这种重复执行无须循环控制。
递归一定要向,否则这种递归就变成了无穷递归,停不下来,类似于。最终发生栈内存溢出。
C.举例:
本节,我们主要讲述了Java的面向对象的基础知识点,后面我也会继续开坑的,旅途还在继续,来日方长!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12.html