0%

java-Day2——封装

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类中属性赋值的渠道

  1. 默认初始化
  2. 显示初始化
  3. 构造器初始化
  4. 通过“对象.方法”的方式赋值;
  5. 通过“对象.属性”的方式赋值;

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 变量赋值和构造方法加载的优先级问题

通过字节码文件可以发现变量显示赋值先于构造器中的赋值

-------------本文结束感谢您的阅读-------------