1.封装性
1.1 四种权限修饰符:private、缺省、protected、public
类:只能用public、缺省修饰
类的内部成员:四种都可以
1.2 作用:用四种权限修饰来修饰类和类的内部成员。当这些成员被调用时,体现可见性的大小
修饰符 | 本类内部 | 本包内 | 其他包的子类 | 其他包的非子类 |
---|---|---|---|---|
private | √ | × | × | × |
缺省 | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
1.3 使用频率
比较高:public、private
低:缺省、protected
1.4 封装性体现
场景1:private类的属性,提供public的get和set方法,对此属性进行获取或修改
场景2:将类中不需要对外暴露的方法,设置为private
场景3:单例模式中构造器private的,避免在类的外部创建实例。
2.构造器
2.1 构造器的作用
作用1:搭配new关键字,创建类的对象
作用2:在创建对象的同时,可以给对象的相关属性赋值
2.2 构造器使用说明
构造器声明的格式:权限修饰符 类名(形参){}
创建类后,在没有显示提高任何构造器的情况下,系统默认提供一个空参的构造器,且构造器权限与类声明的权限相同
一旦类中显示声明了构造器,则系统不再提供默认的空参构造器
一个类中可以声明多个构造器,彼此之间构成重载
3.类中属性赋值过程
3.1类中属性赋值的渠道
- 默认初始化
- 显示初始化
- 构造器初始化
- 通过“对象.方法”的方式赋值;
- 通过“对象.属性”的方式赋值;
4.JavaBean
JavaBean:一种java语言写成的可重用组件
JavaBean符合如下标准的Java类:
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get、set方法
5.This 关键字
5.1 this可以调用的结构: 成员变量、方法、构造器
5.2 this的理解:当前对象(在方法中调用时)或当前正在创建的对象(在构造器中调用时)
5.3 this调用属性和方法
针对于方法内的使用情况(非static):
一般情况:通过对象a调用方法,可以在方法内调用当前对象a的属性或其他方法。此时,可以在属性和其他方法前使用“this.”,表示当前属性或方法所属的对象a。 但是通常,我们都选择省略”this.”结构
特殊情况: 如果方法的形参与对象的属性同名了,必须使用this进行区分。
5.4 this调用构造器
格式:this(形参)。
6.常见问题
6.1 java中内存结构的划分
- java中内存结果划分为: 虚拟机栈、堆、方法区;程序计数器、本地方法栈
- 虚拟机栈:以栈帧为基本单位,有入栈和出栈操作;每个栈帧入栈操作对应一个方法的执行;方法内的局部变量会存储在栈帧中。
- 堆空间:new出来的结构(数组、对象): 1.数组,数组的元素在堆中 2.对象的成员变量在堆中
- 方法区:加载的类的模版结构
6.2 Java引用类型有几种?
类、数组、接口;枚举、注解、记录
6.3 对象存在java内存的哪种区域里:
堆空间
6.4 main方法public能不能换成private?
能。但是改以后就不能作为程序的入口了,就只是一个普通的方法
6.5 构造方法和普通方法的区别
编写角度:没有共同点。 声明格式、作用都不同
字节码角度:构造器会以
6.6 成员变量和局部变量的区别:
- 声明的位置
- 内存中存放的位置
- 作用域
- 权限修饰符
- 初始化值
- 生命周期
6.7 变量赋值和构造方法加载的优先级问题
通过字节码文件可以发现变量显示赋值先于构造器中的赋值