封装、关键字private this & static

mac2025-01-12  44

封装、关键字private this & static

文章目录

封装、关键字private this & static1.封装 & private关键字1.1两种封装1.2封装步骤1.3封装的好处 2.this关键字2.1this的特点2.2this是对象的证明 3.static关键字3.1static关键字的特点

1.封装 & private关键字

封装的概述:隐藏对象的属性和功能的实现,仅对外界提供公共访问方式(封装本质是访问权限修饰符)

(封装就是对容器进行权限控制,通过访问权限修饰符【private、static…】实现)

1.1两种封装

封装成员变量封装成员方法

1.2封装步骤

对封装的成员添加private关键字

// 1.对需要封装的成员添加private关键字修饰 private String name; private int age; private String address;

添加对成员的读写(get / set)

// 自动生成get/set方法 // alt + shift + s 再按R键 public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }

在读写方法中添加逻辑业务代码或者数据校验代码

1.3封装的好处

提高了类的成员的安全性(避免外界修改错误数据)

2.this关键字

当局部变量 & 成员变量重名时,需要用this关键字进行区分

2.1this的特点

this本质就是一个引用、变量、实例,是当前类的对象(变量:this)

this可以理解成 “自己的”

public void setAuthor(String author) { this.author = author; //指的author不是参数列表的author,是成员变量author }

this只能出现在类的内部

类的成员在内部访问可以忽略this

public String getAuthor() { return author;// return this.author; //author是成员变量,但在栈区调用时没有创建对象 //原因是因为已经有对象指向堆区(省略的this) }

每次创建一个对象默认都会创建一个this引用指向自己对应的那个堆区的空间,相互独立互补影响

谁new或者谁调用某个方法,this就代指谁

静态环境(static)下不能够出现this 和 super

this除了可以访问本类的成员变量和成员方法以外还可以访问构造方法

2.2this是对象的证明

public void test() { this.show(); Book book = new Book(); method(book);//创建的新对象 method(new Book());//匿名的对象也是创建了新的对象 method(this);//假如this也能像上面两情况一样,不报错,即this也是对象 } // 证明this就是当前类的引用 public void method(Book book) { book.show(); }

3.static关键字

多个对象共享同一份数据时,可以使用static关键字修饰

3.1static关键字的特点

访问静态成员的方式

//通过类访问 (推荐) Student.nationality = "中国"; //通过对象访问静态成员 (不建议) s1.nationality = "中国";

静态变量属于类的,不属于具体的对象

public Student(String name, int age, String address, String nationality) { this.name = name; this.age = age; this.address = address; Student.nationality = nationality; //this.nationality = nationality; //The static field Student.nationality should be accessed in a static way //虽然对象也可以调用静态变量,但系统建议使用类对静态变量进行调用 }

静态变量又称:“类变量” ( 因为属于类的 ),没有使用static的变量为:非静态变量

静态变量可以修饰成员变量,也可以修饰方法(多用于工具类编写Arrays Object【所有成员变量&构造方法私有】外界只能调用)

静态环境下不能够访问非静态变量,非静态环境下可以访问静态变量

public static void staticMethod() { System.out.println("staticMethod"); // System.out.println(name); //报错:Cannot make a static reference to the non-static field nam } //1.static的方法在加载class时已经完成了,在创建对象之前 //2.static是类,而非静态变量是对象,用static引用对象,系统不知道引用明确的对象

静态修饰的变量在类加载的时候加载到方法区的静态区

static还可以修饰 代码块 和 类(内部类)

最新回复(0)