Java基础教程【第八章:访问修饰符】

简介: Java基础教程【第八章:访问修饰符】

1. 访问修饰符


image.png


变量和方法的修饰字 public、protected、defaulted、private


1.1 public

任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法

只有在使用 public 访问修饰符时,类的成员才可被同一包或不同包中的所有类访问。

也就是说,public 访问修饰符可以使类的特性公用于任何类。


1.2 protected

如果一个类中变量或方法有修饰字 protected,同一类,同一包可以使用。不同包的类要使用,必须是该类的子类可以存取变量或调用。

如果希望一个成员在当前包外可见,但仅仅是成员所在类的子类直接可见,就要使用 protected 修饰该成员。


1.3 private

private 访问修饰符是限制性最大的一种访问修饰符。

被声明为 private 的成员只能被此类中的其他成员访问,不能被类外看到。

继承体系结构中最高级别的类决不会被声明为 private 类。


1.4 defaulted

类是缺省的,该类具有包访问权限,只能被同一包中的其它类访问


2. static

用 static 修饰符修饰,可以是变量、方法或代码块。

类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。

类的静态成员可以与类的名称一起使用,而无需创建类的对象。

静态变量或方法也称为类变量或类方法。


2.1 静态变量

public class TestDemo {
  static int COUNT = 100;
}
public class Test {
  public static void main(String[] args) {
  System.out.println(TestDemo.COUNT);//可以直接通过类名进行调用,推荐使用
  TestDemo ts = new TestDemo();
  System.out.println(ts.COUNT);//也可以通过某一对象尽心调用
  }
}

2.2 静态方法

与静态方法相关的几个要点:

– 类的静态方法只能访问其他的静态成员

– 静态方法没有 this

– 静态方法不能被覆盖为非静态方法


public class TestDemo {
  static int COUNT = 100;
  int i = 10;
  public static void say() {
  // System.out.println(i);//静态方法中只能访问静态修饰的属性和方法
  System.out.println(COUNT);
  }
  // main方法本身就是一个静态方法,是一个特殊的静态方法
  public static void main(String[] args) {
    say();// 静态方法中可以访问静态方法
  } 
 }

2.3 静态代码块

形式:static { ……}

如果需要通过计算来初始化静态变量,可以声明一个静态块。

静态块仅在该类被加载时执行一次。

public class TestDemo {
  private static int COUNT = 100;
  static {
  System.out.println(COUNT);
  }
  public static void main(String[] args) {
  System.out.println(COUNT);
  } 
}

java类属性和对象属性的初始化顺序:


首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值;

然后再按照书写顺序依次处理每一个static的东西;

把对象属性初始化为缺省值;

按照书写顺序依次处理每一个对象属性的初始化语句最后执行构造函数;

public class Test {
  // 代码块
  {
  System.out.println("3");
  }
  {
  System.out.println("4");
  }
  static {
  System.out.println("1");
  }
  static {
  System.out.println("2");
  }
  public Test() {
  System.out.println("构造函数");
  }
  public static void main(String[] args) {
  new Test();
  } 
}

输出:1.2.3.4.构造函数


3. final

final 关键字:final 修饰符可应用于类、方法和变量。

1、final 在应用于类、方法和变量时意义是不同的,但本质是一样的:final 表示不可改变。

2、声明为 final 的类不能被继承。

3、声明的方法不能被重写,如果一个类是 final 类,那么它的所有方法都隐式的是 final 方法。

4、声明的变量必须赋初值,它实质上就是一个常量。

目录
相关文章
|
4天前
|
XML JavaScript Java
Java 中文官方教程 2022 版(四十)(4)
Java 中文官方教程 2022 版(四十)
35 0
|
2天前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
6 2
|
3天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
31 2
|
3天前
|
安全 Java
Java基础教程(15)-多线程基础
【4月更文挑战第15天】Java内置多线程支持,通过Thread类或Runnable接口实现。线程状态包括New、Runnable、Blocked、Waiting、Timed Waiting和Terminated。启动线程调用start(),中断线程用interrupt(),同步用synchronized关键字。线程安全包如java.util.concurrent提供并发集合和原子操作。线程池如ExecutorService简化任务管理,Callable接口允许返回值,Future配合获取异步结果。Java 8引入CompletableFuture支持回调。
|
4天前
|
XML 算法 搜索推荐
Java 中文官方教程 2022 版(四十九)(4)
Java 中文官方教程 2022 版(四十九)
31 0
|
4天前
|
XML 自然语言处理 安全
Java 中文官方教程 2022 版(四十九)(3)
Java 中文官方教程 2022 版(四十九)
22 0
|
4天前
|
XML Java 编译器
Java 中文官方教程 2022 版(四十九)(2)
Java 中文官方教程 2022 版(四十九)
24 0
|
4天前
|
XML 网络协议 Java
Java 中文官方教程 2022 版(四十八)(3)
Java 中文官方教程 2022 版(四十八)
7 0
|
4天前
|
小程序 安全 Java
Java 中文官方教程 2022 版(四十七)(3)
Java 中文官方教程 2022 版(四十七)
9 0
|
4天前
|
安全 Java 编译器
Java 中文官方教程 2022 版(四十六)(2)
Java 中文官方教程 2022 版(四十六)
20 0