Java中的public、private、static和final浅谈

1、publicprivate

两个都是访问权限修饰符,用于控制外界对类内部成员的访问。

  • public:表明对象成员是完全共有的,外界可以随意访问。用public修饰的数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。
  • private:表明对象成员是完全私有的,不容许外界的任何访问。private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,包括子类。

2、staticstatic是控制类成员变化的修饰符之一

static:静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一操作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。怎么理解这句话?记住java是一个面向对象的语言,万事万物皆对象,无论你做什么都需要创建一个对象,然后再调用这个对象的方法,所以java中压根就没有所谓的“全局变量”,但是没有这个概念,不代表你不可以实现这个功能,java存在的目的就是让人们使用它去达到人们想要的效果,所以stat

### 修饰符顺序的规范与影响 在 Java 中,`private`、`static` `final` 等修饰符可以组合使用来修饰类的成员变量或方法。尽管编译器并不强制要求修饰符的顺序,但根据 Java 语言规范(JLS)行业惯例,推荐的顺序是:`private static final`。这种顺序将访问修饰符(如 `private`)放在最前面,其次是与类相关的修饰符(如 `static`),最后是用于限制变量或方法行为的修饰符(如 `final`)[^1]。 从编译器的角度来看,无论使用 `private static` 还是 `static private`,Java 编译器都能正确解析其含义,不会导致语法错误。因此,修饰符的顺序在技术上不会影响程序的功能或行为。然而,遵循推荐的顺序有助于代码的可读性一致性,使开发者更容易理解代码意图。 ### 代码示例与实践 以下是一个使用 `private static final` 修饰符的示例: ```java public class ExampleClass { private static final int MAX_VALUE = 100; private static void printMaxValue() { System.out.println(MAX_VALUE); } } ``` 在上述代码中,`MAX_VALUE` 是一个私有的静态常量,而 `printMaxValue` 是一个私有的静态方法。这些修饰符的顺序符合推荐规范,使代码更加清晰易读。 ### 访问权限与静态成员的关系 `private` 修饰符用于限制成员的访问权限,使其只能在定义它的类内部访问。而 `static` 修饰符则表明该成员与类本身相关,而不是与类的实例相关。当两者一起使用时,`private static` 成员可以在类的内部被访问,但无法通过类的实例或外部类访问。例如: ```java public class ExampleClass { private static int count = 0; public static void incrementCount() { count++; } public static int getCount() { return count; } } public class AnotherClass { public static void main(String[] args) { // 以下代码会编译错误,因为 count 是 private 的 // System.out.println(ExampleClass.count); // 正确访问方式 ExampleClass.incrementCount(); System.out.println(ExampleClass.getCount()); } } ``` 在这个例子中,`count` 是 `private static` 的,因此无法直接从 `AnotherClass` 访问。必须通过公共的静态方法(如 `incrementCount` `getCount`)来操作该变量。 ### 静态方法与非静态成员的关系 需要注意的是,静态方法不能直接访问类的非静态成员(包括变量方法),因为静态方法在调用时不传递 `this` 关键字,也无法关联到具体的对象实例。而非静态方法则可以访问静态成员。因此,在设计类的结构时,应确保静态方法仅操作静态成员,以避免编译错误。 ### 总结 虽然 `private static` `static private` 在语法上没有区别,但为了代码的可读性一致性,应遵循推荐的修饰符顺序。此外,`private static` 成员的访问权限受到限制,只能在定义它们的类内部访问,而静态方法不能直接访问非静态成员。这些规则规范有助于编写更清晰、可维护的 Java 代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.D.Chuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值