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