第14讲
权限修饰符
修饰符用来定义类、方法或者变量,通常放在语句的最前端。Java中,可以使用权限修饰符(访问控制符)来保护对类、变量、方法和构造方法的访问。
下表中 √
表示可访问。
修饰符 | 同一个类中 | 同一个包中的子类、无关类 | 不同包的子类 | 不同包的无关类 |
---|---|---|---|---|
private(私有的) | √ | |||
默认(空着不写) | √ | √ | ||
protected(受保护的) | √ | √ | √ | |
public(公共的) | √ | √ | √ | √ |
状态修饰符
static
静态的
- 可以修饰成员变量、成员方法
被static修饰的特点: 被类的所有对象共享
静态的成员方法只能访问静态成员
static修饰成员变量
被static修饰的成员变量叫静态变量
静态变量与对象无关,它随着类的加载而加载的,优先于对象存在
特点: 被该类的所有对象共享(所有对象用同一个值),只有一份
调用方式:
- 类名调用(推荐)
类名.静态变量
- 对象名调用
对象名.静态变量
public class Student {
//static修饰成员变量
public static String university;
public void show() {
Sout: university;
}
}
public class Demo {
public static void main(String[] args) {
//类名调用
Student.university = "**大学";
Student s1 = new Student();
Student s2 = new Student();
s1.show(); //**大学
s2.shou(); //**大学
}
}
static修饰成员方法
被static修饰的成员方法叫静态方法
多用在测试类和工具类中
调用方式:
- 类名调用(推荐)
类名.静态方法
- 对象名调用
对象名.静态方法
访问特点
成员方法 | 静态的成员变量 | 非静态的成员变量 | 静态的成员方法 | 非静态的成员方法 |
---|---|---|---|---|
非静态的成员方法 | √ | √ | √ | √ |
静态的成员方法 | √ | √ |
静态方法中没有this关键字
- 静态方法只能访问静态
- 非静态方法可以访问静态与非静态
final
最终的,不可改变的
- 可以修饰方法、变量、类
final修饰基本数据类型变量
常量:不能再被赋值
public class Student {
final double PI = 3.14;
PI = 20; //报错,常量:不能再被赋值
}
final修饰引用数据类型变量
对象的地址值不能变,但对象内部的属性值可以改变
public class Student {
public int age = 20;
}
class Demo {
final Student s = new Student();
s.age = 100; //对象内部的属性值可以改变
s = new Student();//报错,对象的地址值不能变
}
final修饰方法
最终方法:不能再重写
public class Fu {
public final void show() {
}
}
public class Zi extends Fu {
@Override
public final void show() { //报错,最终方法:不能再重写
}
}
final修饰类
最终类:不能再作为父类被继承
public final class Fu {
}
public class Zi extends Fu { //报错,最终类:不能再作为父类被继承
}