A.两类状态修饰符:
1.final(最终态)
2.static(静态)
B.final关键字:
a.简单说明:final关键字是最终的意思,可以修饰类,成员方法,变量。
b.final关键字修饰的特点:
1.final修饰类表示该类为最终类从而不能被继承。
2.final修饰方法表示该方法为最终方法而不能被重写。
3.final修饰变量表示该变量是常量从而不能被再次赋值。
c.final修饰特点的相关代码:
1.修饰类
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰类
*/
public final class Fu {
public Fu(){
System.out.println("Fu中无参构造方法被调用。");
}
public Fu(int age) {
System.out.println("Fu中带参构造方法被调用。");
}
}
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰类
*/
public class Zi extends Fu {
public Zi(){
System.out.println("Zi中无参构造方法被调用。");
}
public Zi(int age) {
System.out.println("Zi中带参构造方法被调用。");
}
public static void main(String[] args) {
Zi z = new Zi();
}
}
D:\code\java\src\demo012\Zi.java:8:25
java: The type Zi cannot subclass the final class demo012.Fu
控制台报出不能将该类“Zi"作为用final修饰的class的子类。
2.修饰方法
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰方法
*/
public class Fu {
public final void method() {
System.out.println("我正在学Java");
}
}
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰方法
*/
public class Zi extends Fu {
@Override
public void method() {
}
public static void main(String[] args) {
Zi z =new Zi();
}
}
D:\code\java\src\demo012\Zi.java:10:17
java: Cannot override the final method from demo012.Fu
控制台报出不能重写由final修饰的类"Fu"
3.修饰变量
.修饰成员变量
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰成员变量
*/public class FinalTest02 {
public final int number = 10;
public void show() {
number = 100;
System.out.println(number);
}
public static void main(String[] args) {
FinalTest02 ft = new FinalTest02();
}
}
D:\code\java\src\demo012\FinalTest02.java:11:10
java: The final field demo012.FinalTest02.number cannot be assigned
.修饰局部变量
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰局部变量(基本类型)
* 修饰基本类型;值不能变
*/
public class FinalDemo {
public static void main(String[] args) {
//基本类型的变量
final int age = 10;
age = 100;
System.out.println(age);
}
}
D:\code\java\src\demo012\FinalDemo.java:11:9
java: The final local variable age cannot be assigned. It must be blank and not using a compound assignment
package demo012;
/**
* @author ln
* @date 2022/1/16
* @description final修饰局部变量(引用类型)
* 引用类型内容可变,地址值不可变
*/
public class FinalDemo {
public static void main(String[] args) {
//引用类型的变量
final FinalStudent fs = new FinalStudent();
System.out.println(fs.age);
fs = new FinalStudent();
}
}
D:\code\java\src\demo012\FinalDemo.java:14:9
java: The final local variable fs cannot be assigned. It must be blank and not using a compound assignment
C.static关键字
a.简单说明:static是静态的意思,可以用来修饰成员方法成员变量。
b.static修饰的特点:
1.被类的所有对象所共享,这也是我们判断是否使用静态关键字的关键。
2.可以使用类名来调用也可以使用对象名来调用,推荐使用类名调用。
c.相关static修饰特点的代码;
package demo012;
/**
* @author ln
* @date 2022/1/16
* @descripton Static关键字修饰的特点
*/
public class Student02 {
public static String school;
public String name;
public int age;
public void show() {
System.out.println(name + "," + age + "," + school);
}
}
package demo012;
/**
* @author ln
* @date 2022/1/16
* @descripton Static关键字修饰的特点(测试类)
*/
public class StaticDemo {
public static void main(String[] args) {
//类名调用
Student02.school = "清*大学";
Student02 s = new Student02();
s.name ="李华";
s.age = 19;
s.show();
Student02 s2 = new Student02();
s2.name = "小明";
s2.age = 19;
s2.show();
}
}
李华,19,清*大学
小明,19,清*大学
d.static访问特点:
非静态成员方法:
1.能访问静态成员变量
2.能访问静态成员方法
3.能访问非静态成员变量
4.能访问非静态成员方法
静态成员方法
1.能访问静态成员变量
2.能访问静态成员方法
e.相关访问特点代码
package demo012;
/**
* @author ln
* @date 2022/1/16
* @descripton Static关键字修饰的访问特点
*/
public class StaticDemo02 {
//静态成员变量
private static String name = "李华";
//非静态成员变量
private String school = "清*大学";
//非静态成员方法
public void show() {
//调用静态成员变量
System.out.println(name);
//调用非静态成员变量
System.out.println(school);
//调用静态成员方法
show2();
//调用非静态成员方法
show3();
}
//静态成员方法
public static void show2() {
//调用静态成员变量
System.out.println(name);
//调用静态成员方法
show4();
}
//非静态成员方法
public void show3() {
}
//静态成员方法
public static void show4() {
}
}
: