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();    }}

注意事项

  1. 动态内容是优先于对象存在,只能拜访动态,不能应用this/super。动态润饰的内容存于动态区。
class Demo {    //成员变量    public int num = 100;    //静态方法    public static void method(){        //this.num; 不能应用this/super。        System.out.println(this.num);    }//退出Java开发交换君样:756584822一起吹水聊天}
  1. 同一个类中,动态成员只能拜访动态成员
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