共计 2519 个字符,预计需要花费 7 分钟才能阅读完成。
final 关键词
概念:final 的意思为最终,不可变。final 是个修饰符,它能够用来润饰类,类的成员,以及局部变量。不能润饰构造方法。
特点:
1.final 润饰的类不能够被继承,但能够继承别的类。
class Yy {}
final class Fu extends Yy{} // 能够继承 Yy 类
class Zi extends Fu{} // 不能继承 Fu 类
2.final 润饰的办法不能够被子类重写, 但父类中没有被 final 润饰办法,子类重写后能够加 final。
class Fu {
// final 润饰的办法,不能够被笼罩,但能够继承应用
public final void method1(){}
public void method2(){}
}
class Zi extends Fu {
// 重写 method2 办法
public final void method2(){}
}// 退出 Java 开发交换君样:756584822 一起吹水聊天
3 final 润饰的变量称为常量,这些变量只能赋值一次。而且一生不变。
final int i = 20;
i = 30; // 赋值报错,final 润饰的变量只能赋值一次
4. 援用类型的变量值为对象地址值,地址值不能更改,然而地址内的对象属性值能够批改。
final Person p = new Person();
Person p2 = new Person();
p = p2; //final 润饰的变量 p,所记录的地址值不能扭转
p.name = "小明";// 能够更改 p 对象中 name 属性值
5. 润饰成员变量,须要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均须要 ` 为其赋值。)
class Demo {
// 间接赋值
final int m = 100;
//final 润饰的成员变量,须要在创建对象前赋值,否则报错。final int n;
public Demo(){
// 能够在创建对象时所调用的构造方法中,为变量 n 赋值
n = 2016;
}
}
static 关键词
概念:static 是动态修饰符,个别用来润饰类中的成员。不创建对象,就能够调用办法。
特点:
1. 被 static 润饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在拜访或批改 static 润饰的成员变量时,其中一个对象将 static 成员变量值进行了批改,其余对象中的 static 成员变量值跟着扭转,即多个对象共享同一个 static 成员变量)
class Demo {public static int num = 100;}
class Test {public static void main(String[] args) {Demo d1 = new Demo();
Demo d2 = new Demo();
d1.num = 200;
System.out.println(d1.num); // 后果为 200
System.out.println(d2.num); // 后果为 200
}
}
2. 被 static 润饰的成员能够并且倡议通过类名间接拜访。
拜访动态成员的格局:
类名. 动态成员变量名
类名. 动态成员办法名 (参数)
对象名. 动态成员变量名 ------ 不倡议应用该形式,会呈现正告
对象名. 动态成员办法名 (参数) ------ 不倡议应用该形式,会呈现正告
class Demo {
// 动态成员变量
public static int num = 100;
// 静态方法
public static void method(){System.out.println("静态方法");
}
}
class Test {public static void main(String[] args) {System.out.println(Demo.num);
Demo.method();}
}
注意事项 :
- 动态内容是优先于对象存在,只能拜访动态,不能应用 this/super。动态润饰的内容存于动态区。
class Demo {
// 成员变量
public int num = 100;
// 静态方法
public static void method(){
//this.num; 不能应用 this/super。System.out.println(this.num);
}// 退出 Java 开发交换君样:756584822 一起吹水聊天
}
- 同一个类中,动态成员只能拜访动态成员
class Demo {
// 成员变量
public int num = 100;
// 动态成员变量
public static int count = 200;
// 静态方法
public static void method(){//System.out.println(num); 静态方法中,只能拜访动态成员变量或动态成员办法
System.out.println(count);
}
}
3.main 办法为静态方法仅仅为程序执行入口,它不属于任何一个对象,能够定义在任意类中。
4. 多态调用办法中,编译看 = 右边,父类有,编译胜利,父类没有,编译失败
- 运行,静态方法,运行父类中的静态方法,
- 运行,非静态方法,运行子类的重写办法
- 成员变量,编译运行全是父类
定义动态常量
概念 :开发中,咱们想在类中定义一个动态常量,通常应用 public static final 润饰的变量来实现定义。此时变量名全副大写,多个单词应用下划线连贯。
定义格局:public static final 数据类型 变量名 = 值;
public class School {
public static final String SCHOOL_NAME = "北京大学";
public static void method(){System.out.println("一个静态方法");
}// 退出 Java 开发交换君样:756584822 一起吹水聊天
}
当咱们想应用类的动态成员时,不须要创建对象,间接应用类名来拜访即可。
System.out.println(Company.SCHOOL_NAME);
Company.method(); // 调用一个静态方法
留神:
接口中的每个成员变量都默认应用 public static final 润饰。
所有接口中的成员变量已是动态常量,因为接口没有构造方法,所以必须显示赋值。能够间接用接口名拜访。
interface Inter {public static final int COUNT = 100;}
拜访接口的成员变量:
Inter.COUNT