四大关键字:super,this,final,static
this(当前类):
(1)this
位置:在构造方法中或非静态方法中
代表的是当前对象(即哪个对象调用当前的属性或方法 this即这个对象
在构造方法中或非静态方法(实例级别的方法)中this.默认可以省略,当局部变量和全局变量(属性)同名时,如果想要代表全局变量,this不能省略
(2)this(xxx)
位置:只能在构造方法中,且只能在第一行出现
![](https://img-blog.csdnimg.cn/img_convert/8615df7f9eeef816b865c10cd84d96cc.png)
上面的构造函数调用下面的构造函数
代表:调用当前类的构造方法(构造方法调用构造方法)super(在子类中)*
this.和super.不能出现在静态方法中
2.super.
位置:在子构造方法中或非静态方法中
代表的是父类对象(调用者对象的父对象)
代表调用父的属性或者方法(不能省略)
(2)super()
位置:只能在子构造方法中,且只能在第一行出现 (this()和super()不能同时出现
特殊:默认构造方法的第一行省略了super() 即子类的构造方法默认会自动调用父类的无参数构造。 自己写super(xxx)则不再默认
代表:调用父类的构造方法
3.static
![](https://img-blog.csdnimg.cn/img_convert/5e01ac98ae501ac2cbec081d3a3308bf.png)
静态代码块:
![](https://img-blog.csdnimg.cn/img_convert/e1c3bdbeb25243a86cb02fa887aa7403.png)
1.在类首次加载时运行,且只会运行一次。
(1)当前类中入口方法触发类加载
(2)创建对象触发类加载
(3)静态内容的调用触发类加载
(4)反射机制可以触发类的加载
![](https://img-blog.csdnimg.cn/img_convert/bd9276d8176fdf2505c8c1634e522774.png)
括号中放的是类全路径。copy中可查看类的全路径。
异常:Alt+enter
2.有继承关系的类
在加载子类的时候会先加载父类
先执行父的静态代码块-》子的静态代码块
非静态代码块:只有一个人大括号即可
![](https://img-blog.csdnimg.cn/img_convert/debeca6d7e5122236544624e0faccc58.png)
1.在调用构造方法时触发,次数结合调用构造方法的次数
先执行非静态代码块-》构造方法
2.当有静态代码块时 先执行静态代码块1次-》(非静态代码块,构造方法)可能N次
3.有父子关系时 (静态代码块,非静态代码块,构造方法)
父静态代码块-》子静态代码块-》父(非静态代码块-》构造方法)-》子(非静态代码块-》构造方法)
4.final(最终)
从小到大
* 1.修饰变量(即常量 值不能改变)
1.1全局变量
a.+ final 后全局变量必须被初始化
b.+ final 全局变量值不能改变 (引用类型不能改变的是地址,但是可以修改属性值)*
c.其他是全局和局部的区别】
1.2局部变量
a.+final 后局部变量可以先声明,之后赋值
b.+ final 后局部变量值不能改变(引用类型不能改变的是地址,但是可以修改属性值)* 扩展:
项目应用场景
常量一般用大写,为了区分多个单词用下划线分割 SIGN_FLG .一般对于全局变量static和final连用 static final
参数加final,代表参数不能改变
项目中公共使用的常量 会单独放置一个常量类中 Constant.java (访问修饰符 static final 类型 变量名=值
2.修饰方法(最终方法 不能被重写)
3.修饰类(最终类 不能被继承) 例如:String就是一个final修饰的最终类不能被继承
package com.soft863.www.demo.demo0216.key.final_demo;
/*
* final(最终)
* 从小到大
* 1.修饰变量(即常量 值不能改变)
* 1.1全局变量
* a.+ final 后全局变量必须被初始化
* b.+ final 全局变量值不能改变 (引用类型不能改变的是地址,但是可以修改属性值)
* 【c.其他是全局和局部的区别】
* 1.2局部变量
* a.+final 后局部变量可以先声明,之后赋值
* b.+ final 后局部变量值不能改变(引用类型不能改变的是地址,但是可以修改属性值)
* 扩展:(项目应用场景
* 常量一般用大写,为了区分多个单词用下划线分割 SIGN_FLG
* 一般对于全局变量static和final连用 static final
* 参数加final,代表参数不能改变
* 项目中公共使用的常量 会单独放置一个常量类中 Constant.java (访问修饰符 static final 类型 变量名=值)
*
* 2.修饰方法(最终方法 不能被重写)
*
* 3.修饰类(最终类 不能被继承)
* 例如:String就是一个final修饰的最终类不能被继承
*
* */
//public final class Person {
public class Person {
public String name;
public final String SIGN = ",";
final Worker worker = new Worker();
public void method_01(){
int num;
final int num2;
num2 = 5;
//System.out.println(num);// 变量必须赋值才可以使用
// System.out.println(num2);
// SIGN = "。";final修饰属性 值不能改变
// num2 = 6;//
worker.name = "ls";
final Worker worker2 = new Worker();
worker2.name = "ww";
}
public final void eat(){
System.out.println("人吃饭");
}
}