目录

成员变量和局部变量

封装

封装的步骤

static


成员变量和局部变量

变量的作用域是指在程序中可以通过变量名来访问该变量的范围,变量的作用域由变量被声明时所在位置决定的,Java 中根据不同的作用域可以将变量分为成员变量局部变量

        局部变量:如果一个变量在方法中声明,则该变量是局部变量。

        成员变量:如果一个变量在方法外,类中声明,则该变量是成员变量。

public class HelloWorld{
    int num2 = 2;
    public int test(){
        int num1 = 1;
    }
}

        1、成员变量和局部变量的区别在于作用域不同,成员变量的作用域在整个类中,类中的每个方法都可以访问该变量,局部变量的作用域只在定义该变量的方法中,出了方法体就无法访问。

初始值也不同,局部变量不会赋初始值,成员变量会赋初始值,具体的值是由成员变量的数据类型决定的。

封装

        封装是指将类的属性隐藏在内部,外部不能直接访问和修改,如何实现?

                通过修改成员变量的可见性,从公有改为私有。

public class Student {
    private int id;
    private String name;
    private int age;
    public void show() {
        System.out.println("学生信息如下:");
        System.out.println("学生编号:"+id);
        System.out.println("学生姓名:"+name);
        System.out.println("学生年龄:"+age);
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if(age <= 0) {
            System.out.println("输入的数值有误!");
            age = 18;
        }
        this.age = age;
    }
}

        封装的核心思想就是尽可能把属性都隐藏在内部,对外提供方法来访问,我们可以在这些方法中添加逻辑处理来实现过滤,以屏蔽错误数据的赋值。

封装的步骤

  • 修改属性(成员变量)的访问权限为私有,使得外部不能直接访问。
  • 提供外部可以直接调用的方法。
  • 在该方法中加入对于属性的逻辑控制,避免出现逻辑上的错误。

什么是访问权限?

        访问权限是指该属性可以被直接访问的范围,是在属性定义时设定的,访问权限的可选项一共有 4 种:public、private、默认(不写)、protected,区别在于作用域范围不同。

static

修饰成员变量和成员方法以及代码块

        使用 static 修饰的成员变量和成员方法独立于该类的任何一个实例化对象,访问时不依赖于该类的对象,而是直接通过类去访问,可以理解为被该类的所有实例对象所共用,所以说是全局的。

        static 还可以修饰代码块,被 static 修饰的代码块叫做静态代码块。

static {
    System.out.println(1);
}

        静态代码块的特点是只执行一次,什么时候执行?

                当这个类被加载到内存时执行,不需要开发者手动调用,会自动执行。

                被加载到内存中的类叫做运行时类,静态代码块就是在加载类的时候执行的,因为类只加载一次,所以静态代码块也只执行一次。