【Java】对象与类
程序员文章站
2024-03-16 10:32:16
...
对象和类
类和对象
类的成员
属性
- 属性(成员变量)vs 局部变量
- 在类中声明的位置不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内、方法形参、代码器内、代码块内、构造器形参、构造器内部的变量 - 权限修饰符的不同
可以在声明属性时,指明其权限,使用权限修饰符(private、public、缺省、protected)
局部变量不可以使用权限修饰符 - 默认初始化值
属性根据其类型有默认初始化值
局部变量没有默认初始化值,因此在调用局部变量时必须赋值。 - 内存中加载位置不一样
属性加载到堆空间中(非static)
局部变量加载到栈空间
- 属性赋值的先后顺序
默认初始化->显示初始化->构造器中赋值->通过对象.方法或对象.属性的方式赋值
方法
-
方法的声明: 权限修饰符 返回值类型 方法名(形参列表){
} -
方法的使用中,可以调用当前类的属性和方法。
方法中不能定义方法。
方法重载
- 在同一个类中,允许存在一个以上的同名方法,只要它们参数的个数或者参数的类型不同即可。
- 方法的签名:方法名和参数类型。因此不能有两个名字相同、参数类型也相同却有不同返回类型的方法。
- 判断是否重载和方法的权限修饰符、返回值类型、参数变量名、方法体都没有关系。
方法参数
方法参数的值传递机制
- 形参和实参
- 形参:方法定义时,声明的小括号内的参数
- 实参:方法调用时,实际传给形参的数据
- Java 是按值调用的,也就是方法得到的是所有参数值的一个副本
变量赋值:
- 基本数据类型:赋值的是变量所保存的数据值
- 引用数据类型:赋值的是变量所保存数据的地址值
因此对应的值传递机制:
- 参数是基本数据类型:实参赋给形参的是实参真实存储的数据值
- 参数是引用数据类型:实参赋给形参的是实参存储数据的地址值
可变个数的形参
- 格式:数据类型… 变量名
- 传入参数可以是0个,1个,2个
- 和形参类型也相同的数组之间不共存,即有String[] strs 就不能有String … strs,因为后者就是用来代替前者的,想更简化
- 可变个数形参在方法的形参中,必须声明在末尾,并且最多只能声明一个可变形参
构造器
- 构造器的作用:
创建对象,给对象初始化,因此构造器总是结合new运算符来调用 - 构造器与类同名
- 一旦显示调用了构造器,系统就不再提供默认的空参构造器
- 每个类中至少有一个构造器,多个构造器之间构成重载
对象
匿名对象
- 我们创建的对象,没有显示的赋给一个变量名,即为匿名对象
new Student().方法;//不显示赋给变量名直接调用方法
- 特征:匿名对象智能调用一次,因为new一次就是一个新的对象了
- 匿名对象的使用:作为形参
对象的内存解析
类的三大特征
封装
封装性体现:
- 将类的属性私有化(private),同时提供公共的(public)方法来获取(getXxx)和设置(setXxx)
- 不对外暴露的私有的方法
权限修饰符
- 封装性的体现需要权限修饰符来配合,Java规定四种权限(从小到大排列):private、缺省、protected、public
- 四种权限可以用来修饰类及类的内部结构:
属性、方法、构造器、内部类 - 修饰类只能用:缺省或public
继承
多态
关键字
this
this可以理解为当前对象
- this可以用来修饰属性、方法和构造器
- this修饰属性和方法
在类的方法中,我们可以使用“this”.属性 或 “this”.方法,调用当前对象属性或方法。但通常都省略this。但如果方法的形参和类的属性同名时,必须显示使用“this.变量”的方式,表明是该属性而不是形参。
在类的构造器中, this.属性 调用当前正在创建的对象的属性或方法 - this修饰或调用构造器
在类的构造器中,可以现实的用 this(形参列表)方式,调用本类中指定的其他构造器规定:this(形参列表)必须声明在当前构造器的首行
package
- 为了更好实现项目类的管理,提出包package的概念
- 使用package声明类或接口所属的包,声明在源文件的首行
- 包属于标识符;每“.”一次,就代表一层文件目录
- 同一个包下不能命名同名的接口、类;不同的包下可以
import
- 在源文件显示地使用import结构导入指定包下的类、接口
- 可以使用xxx.* 表示导入这个包下的所有结构。但如果使用xxx子包下的结构,仍需要显示调用。
- 使用的类或接口是在java.lang包下定义的,则可省略import
- 如果源文件中使用了不同包下的同名类,则必须至少有一个用全类名的方式显示
- import static导入指定类或接口中的静态结构
上一篇: 【图像处理】图像二值化----otsu(最大类间方差法、大津算法)
下一篇: dns第二部分 集群