Java 访问权限修饰符

修饰方法和变量

  • 默认访问权限(包访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显式地调用该类的方法或变量。
  • private:如果一个类的方法或者变量被 private 修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显式的进行访问。
  • protected:如果一个类的方法或者变量被 protected 修饰,对于同一个包的类,这个类的方法或变量是可以被访问的。对于不同包的类,只有继承于该类的类才可以访问到该类的方法或者变量。
  • public:被 public 修饰的方法或者变量,在任何地方都是可见的。

Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名。 在 Java 虚拟机执行的时候,JVM 只看完整类名,因此,只要包名不同,类就不同。

1. 局部变量

在方法体内声明的变量被称为局部变量,该变量只能在该方法内使用,类中的其他方法并不知道该变量。 声明局部变量时的注意事项:

  • 局部变量声明在方法、构造方法或者语句块中。
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,将会被销毁。
  • 访问修饰符不能用于局部变量。
  • 局部变量只在声明它的方法、构造方法或者语句块中可见。
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

2. 成员变量

在类内部但在方法体外声明的变量称为成员变量,或者实例变量,或者字段。之所以称为实例变量,是因为该变量只能通过类的实例(对象)来访问。 声明成员变量时的注意事项:

方法用来实现代码的可重用性,我们编写一次方法,并多次使用它。通过增加或者删除方法中的一部分代码,就可以提高整体代码的可读性。

只有方法被调用时,它才会执行。Java 中最有名的方法当属  main()  方法,这是程序的入口。

![[Pasted image 20250820141810.png]]Object 主要提供了 11 个方法,大致可以分为六类:

对象比较

  1. public native int hashCode(),用于返回对象的哈希码。
public int hashCode() { return Objects.hash(name, age); }
  1. public boolean equals(Object obj),用于比较 2 个对象的内存地址是否相等。
public boolean equals(Object obj) {
    return (this == obj);
}

如果比较的是两个对象的值是否相等,就要重写该方法,比如 String 类、Integer 类等都重写了该方法。

static关键字

static 关键字的作用可以用一句话来描述:‘方便在没有创建对象的情况下进行调用,包括变量和方法’。