修饰符
1. 包和权限修饰符
1.1 包
包其实就是文件夹,用来管理我们的类的。一个类的全类名其实是包名加类名(在java中要求全类名是不能重复的)。
1.1.1 包的定义格式
在类的最上面加上 package 包名;
例如
package com.sangeng;
1.1.2 导包
当我们在一个类中使用另外一个类的时候,如果这个类在另外一个包下。我们必须要写全类名或者导包(如果是在java.lang包下的类我们也不需要)。
格式:import 全类名;
例如
import java.util.Scanner;
1.2 权限修饰符
我们使用权限修饰符来控制被修饰的成员的使用权限。Java中有四种权限修饰符:public,protected,default(default并不是关键字,而是代表不写权限修饰符),private
1.2.1 权限
被不同的权限修饰符修饰后,被修饰的成员可以在不同范围内被使用。
本类中 | 同一个包下 | 子类 | 不同包非子类 | |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认 | √ | √ | ||
private | √ |
1.2.2 使用规律总结
我们在工作中一般不使用默认的权限。如果一个成员我们只想在本类中使用我们就使用private修饰。如果我们想只被本类和子类使用可以使用protected。如果可以被人任意使用,我们使用public。
2. static
static是一个修饰符,被其修饰的成员就属于类了。会被类的所有对象所共享。
2.1 静态成员的调用格式
无论是成员变量,还是成员方法。用static修饰后我们即可以用对象名来调用也可以用类名来调用。一般都使用类名称进行调用。
静态变量:**类名.静态变量名**<br />
静态方法:**类名.静态方法名(参数)**
例如
class Student{
public static int num;
public static void test(){}
}
class Demo{
public static void main(String[] args){
Student.num = 10;
Student.test();
}
}
2.2 注意事项
1.静态方法中不能直接使用非静态的成员
2.静态方法中不能使用this
2.3 理解
因为被static修饰的东西就属于类了,所以可以使用**类名**来调用<br />
因为被static修饰的东西就属于类了,类的加载优先于对象,所以在静态方法中,不能使用非静态的成员(PS:非静态的成员是属于对象),类出现的时候对象还不存在,所以不能使用还不存在的东西<br />
因为被static修饰的东西就属于类了,而this代表的某个对象,类加载的时候对象还没创建,所以在静态方法中不能使用this,因为对象都没有出现呢
2.4 使用场景
①如果需要共享数据,可以使用static<br />
**②如果想要方便调用某些成员,可以使用static修饰**(PS:因为就可以直接用类名来调用,不需要创建对象)
3. final
final可以修饰类,成员方法,局部变量,成员变量。
修饰后的作用如下:<br />
①可以修饰类,被final修饰的类**不能被继承**.<br />
②可以修饰成员方法,被final修饰的成员方法**不能被重写**<br />
③可以修饰局部变量,被final修饰的局部变量**就变成了常量**,赋值之后就**不能被修改**<br />
④可以修饰成员变量,被final修饰的成员变量**就变成了常量**,一旦赋值之后就**不能被修改**.并且必须初始化。有两种初始化方式,一种是**直接赋值**,另外一种是要在类的**所有的构造方法中对其进行赋值.**