5. Java 修饰符

🎨 个人介绍
👉大家好,我是:知识的搬运工旺仔
👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻
👉你的支持,是我每天更新的动力。
👉赞点:👍 留言:✍ 收藏:⭐
👉个人格言:想法一步一步的落实,才是你我前进最佳选择。

1. Java 修饰符简介

  1. Java语言提供了很多修饰符,主要分为以下两类
    1. 访问修饰符
    2. 非访问修饰符
  2. 修饰符用来定义类方法或者变量,通常放在语句的最前端

2. 访问控制修饰符

2.1 访问控制修饰符简介

  1. Java中,可以使用访问控制符保护变量方法构造方法访问
  2. Java 支持 4 种不同的访问权限
    1. default (即默认,什么也不写): 在同一包内可见不使用任何修饰符。使用对象:类、接口、变量、方法。
    2. private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
    3. public : 对所有类可见。使用对象:类、接口、变量、方法
    4. protected : 对同一包内的类所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

2.2 default 修饰符

  1. 使用默认访问修饰符声明的变量和方法,对同一个包内的类可见
  2. 接口里的变量都隐式声明为 public static final,而接口里方法默认情况下访问权限为 public
public class Student() {
    int age; 
    
    void methodName() {}
}

2.3 public 修饰符

  1. 被声明为 public 的类方法构造方法接口能够被任何其他类访问
  2. 如果几个相互访问public 类分布在不同的包中,则需要导入相应 public 类所在的
  3. 由于类的继承性,所有的公有方法变量都能被其子类继承
  4. 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类
public class Student() {
    public int age; 
    
    public void methodName() {}
}

2.4 protected 修饰符

  1. protected 需要从以下两个点分析说明
    1. 子类与基类在同一包中:被声明为 protected 的变量方法构造器能被同一个包中任何其他类访问
    2. 子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法
  2. protected 可以修饰数据成员构造方法方法成员不能修饰类(内部类除外)。
  3. 子类访问 protected 修饰符声明的方法变量,这样就能保护不相关使用这些方法变量
protected  class Student() {
    protected  int age; 
    
    protected  void methodName() {}
}

2.5 访问控制和继承规则

  1. 父类声明public 的方法子类中必须public
  2. 父类声明protected 的方法子类中要么声明为 protected,要么声明为 public不能声明为 private
  3. 父类声明private 的方法不能够被继承

3. 非访问修饰符

3.1 非访问修饰符介绍

  1. static 修饰符,用来修饰类方法类变量
  2. final 修饰符,用来修饰类方法变量final 修饰类不能够被继承,修饰的方法不能继承类 重新定义修饰的变量常量,是不可修改的。
  3. abstract 修饰符,用来创建抽象类抽象方法
  4. synchronizedvolatile修饰符,主要用于线程的编程。

3.2 static 修饰符

  1. 静态变量:
    1. static 关键字用来声明独立对象静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝
    2. 静态变量也被类变量
    3. 局部变量不能声明static 变量
  2. 静态方法:
    1. static 关键字用来声明独立对象静态方法
    2. 静态方法不使用类的非静态变量
    3. 静态方法参数列表到数据,然后计算这些数据。
    4. 静态方法可以使用类名直接调用
  3. 类变量方法访问可以直接使用classname.variablenameclassname.methodname方式访问
public class Student {
    private final static SCHOOLNAME = "渤海大学";
    
    public static methodName() {
        // TODO Something
    }
}

3.3 final 修饰符

  1. final 变量:
    1. final 表示最后的最终的含义,变量一旦赋值后不能重新赋值
    2. final 修饰实例变量必须显式指定初始值
    3. final 修饰符通常和 static 修饰符一起使用创建类常量
  2. final 方法
    1. 父类中的 final 方法可被子类继承,但是不能被子类重写
    2. 声明 final 方法的主要目的是防止该方法内容被修改
  3. final 类
    1. final 类不能被继承,没有类能够继承 final 类的任何特性
public final class Student {
    private final static SCHOOLNAME = "渤海大学";
    
    public final methodName() {
        // TODO Something
    }
}

3.4 abstract 修饰符

  1. 抽象类:
    1. 抽象类不能用来实例化对象,声明抽象类唯一目的是为了将来对该类进行扩充
    2. 一个类不能同时被 abstractfinal 修饰。如果一个类 包含抽象方法,那么该类一定要声明抽象类,否则将出现编译错误
  2. 抽象方法
    1. 抽象方法是一种没有任何实现方法,该方法的具体实现子类提供
    2. 抽象方法不能声明finalstatic
    3. 任何继承抽象类子类必须实现父类所有抽象方法除非该子类是抽象类
    4. 如果一个类包含若干个抽象方法,那么该类必须声明为抽象类
    5. 抽象类可以不包含抽象方法
public abstract  class Student {
    public abstract void methodName1();  // 全部写法
    void methodName();    // 简略写法
    
    public methodName3() { // 非抽象方法
        // TODO Something
    }
}

3.5 synchronized 修饰符

  1. synchronized 关键字声明的方法 同一时间只能被一个线程访问
  2. synchronized 修饰符可以应用四个访问修饰符
  3. synchronized 属于悲观锁
  4. 它可以使用在方法上,也可以使用在类上,也可以使用在类中的任何位置
  5. 使用它的时候,我们需要转递一个对象,作为锁,这里根据业务需求定
public synchronized class Student {  // 加在类上
    
    public synchronized void methodName1(){}  // 加在方法上
    
    synchronized(this) {  // 在类中,this 就是将这个类作为锁,这个根据业务来定
        // TODO something
    }
   
}

3.6 transient 修饰符

  1. 序列化的对象包含被 transient 修饰的实例变量时java 虚拟机(JVM)跳过该特定的变量
  2. 该修饰符包含在定义变量语句中,用来预处理类变量数据类型
public transient int limit = 55;   // 不会持久化
public int b; // 持久化

3.7 volatile 修饰符

  1. volatile 修饰成员变量在每次被线程访问时,都强制从共享内存重新读取该成员变量
  2. 成员变量发生变化时,会强制线程将变化值写到共享内存
  3. 这样在任何时刻,两个不同线程总是看到某个成员变量同一个值
public volatile  int limit = 55;   // 会重新读取
public int b; // 不会重新读取

🎈看完了不妨给我点个赞吧,👉你的支持,是我每天更新的动力…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知识的搬运工旺仔

希望能帮助到大家学习

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

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

打赏作者

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

抵扣说明:

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

余额充值