一、匿名对象
1.定义:没有引用类型变量指向的对象称作为匿名对象
2.匿名对象要注意的事项:
①我们一般不会给匿名对象赋予属性值,因为永远无法获取到;
②两个匿名对象永远不可能是同一个对象;
3.匿名对象的好处:简化书写
4.匿名对象的应用场景:
①如果一个对象需要调用一个方法一次的时候,而用完这个方法之后,该对象就不再使用了,这时候可以用匿名对象;
②可以作为实参调用一个函数;
二、封装
1.权限修饰符:控制变量的可见范围
①public:公共的,public修饰的成员变量或者方法任何人都可以直接访问;
②private:私有的,private修饰的成员变量或者方法只能在本类中进行直接访问;
2.封装的步骤:
(1)使用private修饰需要被封装的属性
(2)提供一个公共的方法设置或者获取该私有的成员属性
命名规范:
set 属性名();
get 属性名();
3.封装的好处:提高数据的安全性、操作简单、隐藏了实现。
三、构造函数
1.定义:构造函数的作用就是给对应的对象进行初始化。
2.格式:
修饰符函数名(形式参数){
函数体…
}
3.注意的细节:
(1)构造函数是没有返回值类型的;
(2)构造函数的函数名必须要与类名一致;
(3)构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对应的构造函数;
(4)如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数;反之,则不会添加;
(5)构造函数是可以在一个类中以函数重载的形式存在多个的;
4.构造函数与普通函数的区别:
(1)返回值类型的区别:构造函数是没有返回值类型的;而普通函数是有返回值类型的,即使函数没有返回值,返回值类型也要写上void;
(2)函数名的区别:构造函数的函数名必须要与类名一致;普通函数的函数名只要符合标识符的命名规则即可;
(3)调用方式的区别:构造函数在创建对象的时候由jvm调用;而普通函数是由我们使用对象调用的,一个对象可以调用多次普通函数;
(4)作用上的区别:构造函数的作用用于初始化一个对象;普通函数是用于描述一类事物的公共行为的;
四、代码块
1.构造代码块的作用:给对象进行统一的初始化;而构造函数的作用:给对应的对象进行初始化
(注意区分)
2.构造代码块格式
{
构造代码块
}
注意:构造代码块的大括号必须位于成员位置上
3.代码块的类别:构造代码块、局部代码块、静态代码块
4.构造代码块要注意的事项:
(1)java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端;
(2)成员变量的初始化工作其实都在构造函数中执行的;
(3)一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在构造函数之前执行的,构造函数中的代码是最后执行的;
(4)成员变量的显示初始化与构造代码块的代码是按照当前代码的顺序执行的;
五、this关键字
1.this关键字代表了所属函数的调用者对象。
2.this关键字的作用:
(1)如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定访问成员变量的数据;
(2)在一个构造函数中可以调用另外一个构造函数初始化对象;
3.this关键字调用其他的构造函数要注意的事项:
(1)this关键字调用其他的构造函数时,this关键字必须要位于构造函数中的第一个语句;
(2)this关键字在构造函数中不能出现相互调用的情况,因为是一个死循环;
4.this关键字要注意事项:
(1)存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java采取的是“就近原则”的机制访问的);
(2)如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器就会在该变量的前面添加this关键字;