面向对象编程(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

posted @   萧若風  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示