面向对象

    科技2022-07-11  92

    方法

    概念: 可以重复利用的代码 格式: [权限修饰符] [静态修饰符] 返回值类型 方法名([参数列表]){ 方法体; return 返回值; } 权限修饰符:public protected private 默认 静态修饰符:static 返回值类型: 数据类型:基本数据类型 引用数据类型 void:如果方法没有返回值 方法名: 标识符 见名知意:queryUserByUserNameAndPassword 小驼峰命名规则:如果有多个单词,则从第二个单词开始每个单词首字母大写 toString 参数列表: 方法中需要用到的由调用方法者传入的值 参数列表可以为空,也可以一个或者多个参数 格式: 数据类型 参数名1,数据类型 参数名2,… {}:表示的是当前方法的范围 方法体: 一行或者多行代码

    return 返回值; return关键字 通过return将方法执行的结果返回给调用者; 如果通过return 返回值;代码一旦执行则当前方法结束 return; 结束方法

    位置: 在类中方法外 调用方法: 方法名([参数列表]);//如果没有返回值可以直接调用 返回值数据类型 变量名 = 方法名([参数列表]);//将方法返回值赋值给变量 注意: 1、方法不调用不执行 2、main方法 public static void main (String[] args) {} 权限修饰符 静态 无返回值 方法名 参数列表:字符串数组 3、在一个类中不能有同名和参数列表也完全相同的方法 4、return一旦执行 方法就结束了 不能再return再写其他代码,如果 return语句后边有其他代码 编译会报错;

    实参和形参: 实参:调用方法时传入的有具体数据值的参数 形参:方法在定义时再参数列表中指定的参数

    在调用方法时,将实参的数据赋值给形参;

    基本数据类型: 存储的是数据值,实参给形参传值时也是传递的数据值;形参修改的是自己的数据值不会影响实参的数据值; 引用数据类型: 存储的是地址值,实参给形参传值时传递的是地址值;地址值指向了堆内存中对象的实际数据存储的空间;形参的值的修改会导致实参随之发生变化

    方法的内存 方法重载 方法名相同参数列表不同

    构成重载的条件: 1、参数个数相同 数据类型不同 2、参数的个数不同 3、数据类型顺序不同 sum(3,5) sum(double a,int b) sum(int a,double b) 注意: 1、方法名相同 参数类型形同 参数名不同并不能构成重载

    方法递归 概念: 方法自己调用自己 代码: //方法递归实现 public static int sum(int num){ if(num==1){ return 1; } return num+sum(num-1); } 注意: 方法递归必须向已知条件进行递归,如果递归没有结束条件,则会出现栈内存溢出错误: Exception in thread “main” java.lang.StackOverflowError 优点和缺点: 缺点: 很容易出现栈溢出错误 占用大量内存空间

    面向对象–面向过程

    编程思想 抽象 面向过程: 主导者就是自己,关注中间实现的每一步的细节;不能专注于核心的功能; 面向对象: 我需要什么功能就去找能完成这个功能的对象,通过对象的功能来完成需求;不关注对象功能具体的实现,只注重结果;主导者可以专注于自己的核心功能; 各有优劣: 复杂的项目来说,面向对象的思想更符合人类思考问题的方式;方便团队进行合作开发; 简单的功能来说,面向过程更加直接方便,相对效率较高;

    面向对象是基于面向过程的;

    类和对象(实例): 类:抽象的概念 根据一类事物共有的特征和行为提取出来的 对象:对类中的属性和行为进行具体化/实例化

    创建类: 格式: 权限修饰符 class 类名{ 属性; 方法; }

    权限修饰符:public 属性:共有的特征 通常是通过定义变量来实现 格式:数据类型 属性名; 方法: 格式: 权限修饰符 返回值数据类型 方法名(参数列表){ 方法体; return 返回值; } 注意: 类是抽象的 不能直接使用,通常来说,如果需要用类中属性和方法则需要先创建类的对象;

    创建对象: 格式一: 类名 变量名(对象名) = new 类名();

    调用对象的属性和方法: 获取对象的属性: 对象.属性名 设置对象的属性值: 对象.属性名 = 值; 对象.方法名(); 创建对象的内存图: 成员变量和局部变量: 成员变量:实例变量 定义在类中方法外的 局部变量:定义方法和代码块 语句结构中的都是局部变量 成员变量和局部变量: 成员变量:实例变量 定义在类中方法外的 局部变量:定义方法和代码块 语句结构中的都是局部变量

    成员变量和局部变量的区别: 1、定义的位置不同 成员变量定义在类中方法外 局部变量定义方法和代码块 语句结构中 2、作用域 成员变量:整个类 局部变量:方法内 代码块内 语句结构内部 3、内存中的位置 成员变量:对象的堆内存中 局部变量:方法等执行时在栈中开辟空间 4、成员变量在堆中创建时程序会给出默认值 局部变量在栈中不会给出默认值 5、生命周期 成员变量:创建对象时随之创建,只要对象存在,则成员变量一直存储在对象的内存中;当没有引用指向对象的地址时,在不确定的时刻,由垃圾回收器将对象内存释放,成员变量随之消亡 局部变量: 当方法 代码块 语句结构等执行时,创建局部变量;当方法等执行完成,方法的内存释放,局部变量随之消亡; 构造方法: 作用:初始化属性值 格式: 权限修饰符 类名(){} 注意: 1、new 类名();创建对象时默认调用了构造方法 2、如果类中没有显示声明构造方法,则程序会默认生成一个构造方法; 如果类中显示声明构造方法,则程序不会再生成; 3、一个类中可以存在多个构造方法 方法名都和类名一致 参数列表不同 构成了构造方法的重载 构造方法:Constructor(构造器) 创建对象时调用构造方法 方法和类名一致 且没有返回值部分 权限修饰符 类名(参数列表){ //初始化对象 } 注意: 没有返回值部分不是说返回值是void //无参构造方法 没有返回值部分 //如果返回值为void 这不是无参构造 而是一个普通的方法 this: 关键字 当前对象 调用对象的属性和方法 this.属性名 this.属性名 = 值; this.方法名(); this语句: 格式:this([参数列表]); 注意: this语句必须放在首行 再一个构造方法中不能同时使用多个this语句;

    Processed: 0.041, SQL: 8