面向对象编程(OOP)
1、面向对象和面向过程的区别:面向过程,重在具体步骤的实现。而面向对象,重在将问题看成是:理清两个或多个事物之间的关系。
2、面向对象两个要素: 类 和 对象
3、类的结构:属性 和 方法
4、类和对象的创建:
① 创建类:
public class Animal{ //属性 private String name; private int age; //方法 public void eat(String name,int age){ System.out.println("我是"+name+",我"+age+"岁了,我要吃肉!"); } }
② 创建对象:
class Test{ public static void main(String[] args){ //创建对象(实例化对象) Animal a1 = new Animal("老虎",3); } }
5、体会类的多个对象之间的关系:一个类可以有多个对象,每个对象之间的数据都是相互独立的。
6、对象的内存解析:创建类,就是在堆空间中开辟了一个区域,用于存放类中的实际数据。而创建对象,其实就是在栈空间中开辟了一个空间,存放了一个此对象的地址值,此地址值用来调用堆空间中对应类中的数据。
7、属性(成员变量)与局部变量的区别:
① 声明位置不同:属性直接声明在类中,局部变量是在方法内、方法形参、代码块、构造器内、构造器形参等。
② 修饰权限不同:属性可以使用权限修饰符,局部变量不能使用。
③ 默认初始化值:属性有默认值,局部变量没有,需要显示声明。
④ 加载位置不同:属性(非静态的)加载在堆空间中,局部变量加载在栈空间中。
8、方法的声明与使用:
8.1 说明:
① 方法是描述类应该具有的功能。
② 方法分为:有形参、无形参、有返回值、无返回值这四种,
8.2 方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体}
注意:
① 关于权限修饰符的使用,默认的方法优先使用public。
② 关于返回值的使用,如果方法指明了有返回值,必须在声明时指定返回值类型,并且在方法体中需要使用“ return ”来进行返回;如果没有返回值,则使用“ void ”来声明,方法体中不需要使用return。如果确实要使用return,则只能使用“return;”这种句式,表示结束当前方法。
8.3 定义方法的使用,是否需要使用方法的返回值 或 方法的形参? 一,看需求;二,凭经验。
8.4 方法名的声明,见名知意即可。
8.5 方法的形参列表,可以声明1个或多个。(格式:数据类型1 形参1,数据类型2 形参2, ...)
8.6 方法体是方法功能的体现。
8.7 方法中可以调用当前类的属性和方法,如果当前调用的方法是该方法本身,这种情况称为方法的递归。但是,方法中不可以定义方法。
9、return关键字的使用:
9.1 使用范围:方法体中
9.2 作用:
① 结束方法;
② 针对有返回值的方法,使用 “ return 数据 ” 可以返回数据。
注意:return 关键字后面不可以声明执行语句。
10、理解“万事万物皆对象”:
① 在Java中,通常都是将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。
② 涉及到Java语言与前端页面、后端数据库交互时,前后端的结构在Java层面进行交互时,都体现为类和对象。
11、对象数组的内存解析:
例如:
Student[] stu = new Student[5]; //Student是类,stu是Student的对象 class Student{ private string name; private int age; }
说明:“stu”是对象,那么它是存在栈空间中的,“Student”是类,则类中的属性“name”、“age”是存储在堆空间中的。
12、匿名对象:我们创建的对象没有显示的赋值给一个变量名,此时就是匿名对象。
注意:匿名对象只能调用一次。
例如:
new Student(); //此时的“new Student”没有赋值给一个对象(变量),这就是匿名对象
常见用于:某个方法的参数列表里作为形参使用。
13、方法的重载:在同一个类中,允许存在一个以上的同名方法,只要参数类型或参数个数不同即可。
两同一不同:同一个类、同方法名,参数类型不同(或 参数个数不同 或 参数类型不同)
注意:
① 判断是否为方法的重载:与权限修饰符、返回值类型、形参、方法体都没有关系。
② 在通过对象调用方法时,如何确定某一个指定的方法? 答:方法名和参数列表
14、可变个数形参: 方法名(数据类型...变量名){方法体}
例如:
public void show(String... strs){}
注意:
① 当调用可变个数形参的方法的时候,可以传入0个到多个的参数。
② 可变个数形参的方法与同一个类中的同名方法(形参不同)之间构成重载。
③ 可变个数形参的方法与同一个类中的同名方法(形参类型是数组)之间被认为是同一个方法。
例如:
public void show(String[] strs){}
与
public void show(String... strs){}
之间是同一个方法,故报错。
15、理解变量的赋值:基本数据类型 和 引用数据类型
① 基本数据类型:就是把变量A的值赋给变量B,是具体的数据传递过程。此时变量B保存的是变量A的真实数据。
② 引用数据类型:就是把变量A的地址值赋给变量B。此时变量B保存的其实只是变量A的地址值,并不是真实的数据。
16、值传递机制:
注意:
① 方法的形参传递机制是:值传递
② 形参是指:方法定义时,声明在方法小括号内的参数。
③ 实参是指:方法使用时,实际传递给形参的数据。
值传递:
① 基本数据类型:如果参数是基本数据类型,那么此时实参赋给形参的是实参真实的数据。
① 引用数据类型:如果参数是引用数据类型,那么此时实参赋给形参的只是实参的地址值。
17、递归方法:一个方法体内调用它自己本身。
① 使用:例如:计算1~100自然数的和的递归方法(如下所示)
public int getSum(int n){ if(n == 1){ return 1; }else{ return n + getSum(n - 1); } }
② 说明:方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。
③ 特例:斐波那契数列:后一个数字等于前两个数字之和。
例如:1 1 2 3 5 8 13 21 34 55
本文来自博客园,作者:萧若風,转载请注明原文链接:https://www.cnblogs.com/XiaoRuoFeng/p/16400037.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?