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

振华OPPO 发表于 2022/04/22 15:14:14 2022/04/22
【摘要】 @TOC 1. 访问修饰符变量和方法的修饰字 public、protected、defaulted、private 1.1 public任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法只有在使用 public 访问修饰符时,类的成员才可被同一包或不同包中的所有类访问。也就是说,public 访问修饰符可以使类的特性公用于任何类。 1.2 protected如果一...

@TOC

1. 访问修饰符

在这里插入图片描述

在这里插入图片描述
变量和方法的修饰字 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类属性和对象属性的初始化顺序:

  1. 首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值;
  2. 然后再按照书写顺序依次处理每一个static的东西;
  3. 把对象属性初始化为缺省值;
  4. 按照书写顺序依次处理每一个对象属性的初始化语句最后执行构造函数;
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、声明的变量必须赋初值,它实质上就是一个常量。

老鲸鱼第4050楼▼
人生要尽全力度过每一关,不管遇到什么困难,都不可轻言放弃。2016.12.23

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。