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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

振华OPPO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值