万物皆对象
7.1.8 类和对象的区别和联系- 类是抽象的,概念的,代表一类事物,比如人类,猫类…, 即它是数据类型。
- 对象是具体的,实际的,代表一个具体事物, 即实例
- 类是对象的模板,对象是类的一个个体,对应一个实例‘
- 属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型
注意事项和细节说明
- 属性的定义语法同变量
- 属性的定义类型可以为任意类型,包含基本和引用
- 属性如果不赋值,有默认值,规则和数组一致
-
先声明再创建
Cat cat;
cat = new Cat();
-
直接创建
Cat cat = new Cat()
基本语法:对象名.属性名
7.1.13 类和对象的内存分配机制- Java内存的结构解析
- 栈:一般存放基本数据类型(局部变量)
- 堆:存放对象(Cat、数组等)
- 方法区:常量池(常量),类加载信息
- 提高代码复用性
- 可以将实现的细节封装起来,然后供其他用户来调用
访问修饰符 返回数据类型 方法名(形参列表…){
/方法体语句;
return 返回值;
}
- 形参列表:表示成员方法输入cal(int n) ,getSum(int num1, int num2)
- 返回数据类型:表示成员方法输出, void表示没有返回值
- 方法主体:表示为了实现某一功能代码块
- return语句不是必须的
-
访问修饰符 → 控制方法的使用范围
-
返回数据类型
- 一个方法最多有一个返回值 【返回多个结果 → 数组】
- 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
- 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为 return 值; 而且要求返回值类型必须和 return 的值类型一致或兼容
- 如果方法是 void,则方法体中可以没有 return语句或者只写return;
-
方法名
驼峰命名法
-
形参列表
- 可0可多
- 参数类型为任意类型
- 调用带参方法时,一定对应着参数列表传入相同类型或兼容类型的参数
- 方法定义 → 形参,方法调用传入的 → 实参
-
方法体
方法不能嵌套定义
完成功能的具体语句
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参
7.3.2 引用数据类型的传参机制引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参
7.3.3 成员方法返回类型是引用类型 7.4 方法递归调用 7.4.1 基本介绍递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变得简洁
7.4.4 递归重要规则- 执行一个方法时,就创建一个新的受保护的独立栈空间
- 方法中的局部变量时独立的,不会相互影响
- 如果方法中使用的是引用类型变量,会共享数据
- 递归必须向退出递归的条件逼近
Java中允许同一个类中,多个同名方法存在,但要求形参列表不一致
7.5.2 重载的好处- 减轻了起名的麻烦
- 减轻了记名的麻烦
- 方法名必须相同
- 形参列表:必须不同(形参类型或个数或顺序,至少有一样不同)
- 返回类型无要求
java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。
通过可变参数实现
访问修饰符 返回类型 方法名(数据类型… 形参名) {
}
public int sum(int… nums)
int… 表示接受的是可变参数,类型是 int ,即可以接收多个 int(0-多)
使用可变参数时,可以当做数组来使用 即 nums 可以当做数组
- 可变参数的实参可以为0个或任意多个
- 可变参数的实参可以为数组
- 可变参数的本质就是数组
- 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后
- 一个形参列表中只能出现一个可变参数
分类:
- 全局变量
- 局部变量
全局变量可以不赋值,直接使用,因为有默认值,局部变量必须赋值后才能使用,因为没有默认值
7.7.2 注意事项和细节使用-
属性和局部变量可以重名,访问时遵循就近原则
-
在同一个作用域中,两个局部变量不能重名
-
属性生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。局部变量,生命周期较短,伴随着它的代码块的执行而创建,伴随着代码块的结束而销毁。即在一次方法调用过程中。
-
作用域范围不同
全局变量/属性:可以被本类使用,或其他类使用(通过对象调用)局部变量:只能在本类中对应的方法中使用
-
修饰符不同
全局变量/属性可以加修饰符局部变量不可以加修饰符
[修饰符] 方法名 (形参列表){
方法体;
}
- 构造器的修饰符可以默认,也可以是public protected private
- 构造器没有返回值
- 方法名和类名字必须一样
- 参数列表和成员方法规则一样
- 构造器的调用,由系统完成
构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。
特点:
- 方法名和类名相同
- 没有返回值
- 在创建对象时,系统会自动的调用该类的构造器完成对象的初始化。
- 一个类可以定义多个不同的构造器,即构造器重载
- 构造器名和类名要相同
- 构造器没有返回值
- 构造器是完成对象的初始化,并不是创建对象
- 在创建对象时,系统自动的调用该类的构造方法
- 如果程序员没有定义构造器,系统会自动给类生成一个默认无参构造器(也叫默认构造器),比如 Dog (){},使用javap指令反编译看看
- 一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器,除非显式的定义一下即:Dog(){}写
- 加载类信息,只会加载一次
- 在堆中分配空间(地址)
- 完成对象初始化
- 将对象在堆中的地址,返回给对象的引用
JVM会给每个对象分配this,代表当前对象
7.10.3 this的注意事项和使用细节- this 关键字可以用来访问本类的属性、方法、构造器
- this 用于区分当前类的属性和局部变量
- 访问成员方法的语法:this.方法名(参数列表);
- 访问构造器语法:this(参数列表); 注意只能在构造器中使用(即只能在构造器中访问另外一个构造器, 必须放在第一条语句)
- this 不能在类定义的外部使用,只能在类定义的方法中使用。



