java提供了以关键字给我们使用,可以修饰父类成员方法,让其只能被子类使用,不能重写。
final: 最终的,不可改变的
点击查看代码
class Fu7 {
public final void fun1(){
System.out.println("江川是世界上最帅且有钱的男人! ");
}
}
class Zi7 extends Fu7 {
// @Override
// public void fun1(){
// System.out.println("李刚是下一任最帅且有钱的男人!");
// }
}
public class FinalDemo1 {
public static void main(String[] args) {
Zi7 zi7 = new Zi7();
zi7.fun1();
}
}
final的用法:可以修饰类,变量,方法
类:若修饰类,该类不能被继承
变量:修饰变量,变量变常量,不能修改被final变量的值,自定义常量
方法:若修饰方法,方法不能被子类重写
点击查看代码
class Fu8 {
final int a = 10;
int b = 10;
}
class Zi8 extends Fu8 {
public void fun1(){
// a = 20;
System.out.println(a);
}
}
public class FinalDemo2 {
public static void main(String[] args) {
// Zi8 zi8 = new Zi8();
// zi8.fun1();
final Fu8 f = new Fu8(); // 指的是地址值不能被修改
System.out.println(f.a);
System.out.println(f.b);
// f.a = 100;
f.b = 100;
System.out.println(f.b);
// f = new Fu8();
}
}
被final所修饰的成员变量,必须要在构造方法结束之前给值
点击查看代码
class Fu9 {
{
final int a;//1 叫构造代码块
}
final int a = 10;//1
//final int A; 2
Fu9(){
//A = 100; 2
}
}
public class FinalDemo2 {
public static void main(String[] args) {
}
}
代码块:在java程序中,使用{}括起来的代码,代码块
在不同的位置,以及使用不同的修饰词写的代码块,分为不同种类的代码块。
局部代码块:在方法中使用带括号括起来的代码段,整体称之为叫做局部代码块,主要作用是限定变量的作用域
构造代码块:写法和局部代码块的写法是一样的,但是构造代码块是写在 类中 方法外 的位置
随着构造方法的调用而执行,执行顺序是 构造代码块->构造方法
静态代码块:写法上在前两种代码块的写法上,前面是使用static进行修饰,在类中方法外编写
是在程序运行之前,加载的时候执行,只会加载一次,静态代码块只会在程序运行之前有且仅执行一次!
同一个类中静态代码块之间的执行顺序是自上而下
静态代码块 -> 构造代码块 -> 构造方法
同步代码块 :
点击查看代码
public class CodeDemo1 {
CodeDemo1(){
System.out.println("这是无参的构造方法。。。。");
}
//静态代码块
static {
System.out.println("这是静态代码块1。。");
}
//构造代码块
{
System.out.println("这是构造代码块。。。");
}
//静态代码块
static {
System.out.println("这是静态代码块2。。。");
}
public static void main(String[] args) {
// {
// //局部代码块
// int a = 10;
// System.out.println(a);
// }
//
// {
// //局部代码块
// int a = 20;
// System.out.println(a);
// }
CodeDemo1 codeDemo1 = new CodeDemo1();
CodeDemo1 codeDemo2 = new CodeDemo1();
}
}