Java中的类、成员变量及方法的修饰符

本文详细介绍了Java中的类修饰符、成员变量修饰符及方法修饰符,包括public、abstract、final等,并解释了它们的作用范围及使用场景。

类修饰符:

public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。

abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。

final,将一个类生命为最终(即非继承类),表示他不能被其他类继承。

friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。

成员变量修饰符:

public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。

private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。

protected(保护访问控制符)指定该变量可以被自己的类和子类访问。在子类中可以覆盖此变量。

friendly ,在同一个包中的类可以访问,其他包中的类不能访问。

final,最终修饰符,指定此变量的值不能变。

static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。变量属于这个类。

transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。

volatile(易失修饰符)指定该变量可以同时被几个线程控制和修改。

方法修饰符:

public(公共控制符)

private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)

protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。

final,指定该方法不能被重载。

static,指定不需要实例化就可以激活的一个方法。

synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。

native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

ps:

  1. private 是私有的只能在当前类里使用
  2. 不加修饰的是默认的package,详情如下注:package权限就是默认的访问权限,也就是default package 只能被同一个类或者同一个包中的类访问
  3. prtected 只能被同类,同一包中的类,或者不同包中的子类访问
    同一个类 同一个包 不同包的子类 不同包的非子类
    public 可访问 可访问 可访问 可访问
    protected 可访问 可访问 可访问
    package 可访问 可访问
    private 可访问
    原文地址
<think>我们正在讨论Java中局部变量的声明规则。用户询问局部变量是否可以使用访问修饰符(如public, private, protected)声明。 根据Java语言规范: - 局部变量(在方法、构造函数或代码块中声明的变量)不能使用任何访问修饰符(public, private, protected)或static修饰符。 - 局部变量只能使用final修饰符(表示该变量只能被赋值一次)或者不使用任何修饰符。 原因: 1. 局部变量的作用域仅限于声明它的方法、构造函数或代码块内部,因此访问修饰符没有意义,因为外部无法访问到该局部变量。 2. static修饰符用于级别的变量(静态变量),而局部变量是方法级别的,因此不能使用static。 示例: ```java public class Example { public void exampleMethod() { // 正确:没有修饰符 int localVar1 = 10; // 正确:使用final修饰符 final int localVar2 = 20; // 错误:不能使用访问修饰符 // private int localVar3 = 30; // 编译错误 // public int localVar4 = 40; // 编译错误 // protected int localVar5 = 50; // 编译错误 // 错误:不能使用static // static int localVar6 = 60; // 编译错误 } } ``` 因此,结论是:Java局部变量不能使用访问修饰符(public, private, protected)或static修饰符,但可以使用final修饰符。 相关问题: 1. 为什么局部变量不能使用访问修饰符? 2. final局部变量有什么作用? 3. 局部变量和成员变量在声明上有哪些区别? 4. 如何在方法内部声明一个常量(即不可变的局部变量)? 5. Java中局部变量可以使用哪些修饰符?</think>### Java局部变量访问修饰符规则详解 #### 一、核心规则 **Java局部变量不能使用任何访问修饰符**(public/protected/private)声明[^1]。原因如下: 1. **作用域限制**:局部变量仅在声明它的方法/代码块内部可见 2. **访问控制失效**:修饰符用于控制成员的跨访问,而局部变量无法被外部访问 3. **语法规范**:Java语言规范明确禁止(JLS
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值