Java中的关键字总结

final 关键字

1、用final修饰的类不能被继承,没有子类;

2、用final修饰的方法,方法不能被重写;

3、用final修饰变量,变量的值不能被修改,表示常量,(书写规范:全部字母都要大写;多个单词,可以使用下划线(_)分开;)

注意:如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;如果被final修饰的变量是一个引用类型的数据,那么通过这个引用改变堆空间中的数据,不会报错;

4、final用于成员变量表示该成员变量为常量,不能被修改,必须在变量定义时赋值。

5、final用于局部变量表示该局部变量为常量,不能被修改,可以在变量定义时赋值,也可以先定义变量后赋值。

什么时候用final关键字?

有的时候不想别人重写我的方法就使用final关键字修饰该方法;

static关键字

1、static用于成员变量表示该变量只有一份,也就是说静态成员变量属于类而不属于某个具体的类实例对象,所有的类实例对象共享这个静态成员变量;

静态函数是不需要对象的,直接可以使用类名来调用;

2、非静态函数可以调用静态函数;静态函数不能调用非静态函数(非静态函数都是通过对象调用的);静态函数不能使用非静态成员变量,但可以使用静态成员变量;

3、静态函数调用时不需要对象的,所以不能使用和对象有关的关键字;(this;super;)

4、构造函数不能使用static修饰(构造函数是创建对象,开辟空间,给所有成员变量赋默认值之后,有JVM调用进栈,用来给对象的成员变量赋初始值的)

static用于类,这里指的是内部类,那么在别的地方就可以通过外部类名来引用这个静态的内部类。

5、static还可以用于类的代码块,叫做静态代码块,静态代码块在类加载的时候就执行完毕,而类只加载一次;是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

什么时候用static关键字?

不想建立对象时;对于公用的成员变量必须使用static关键字修饰才能保证共享;

private关键字

1、java中的访问权限修饰符(作用是控制被修饰的成员的访问权限);被private修饰的成员,只能在本类中使用;所以被私有的成员需要在外界访问,还需要提供一个公共的方法;

设值:set + 变量名(变量名的首字母大写);

取值:get + 变量名(变量名的首字母大写);

2、构造函数私有化,就只能在被类中使用,别的地方调用不了;单例设计模式时会用到;

在开发中,一般类的成员变量都要私有化,然后提供get和set方法;

interface关键字

1、interface接口不是一个类,使用interface声明;接口没有构造函数;接口是用来描述不属于继承体系的扩展功能的;还可以定义规则;接口和类之间是实现关系,一个实现类可以实现多个接口;接口和接口之间是继承关系,可以多继承和多重继承;

2、接口中可以书写的内容:

成员变量:只能使用一下修饰符:public static final;也就是说,接口中的成员变量,都是常量;

成员函数:只能使用修饰符:public abstract ;也就是说,接口中的方法,都是公共和抽象的;一般函数前面的修饰符,推荐public不要省略;

什么时候用interface关键字?

对于继承体系之外的扩展功能需要使用接口来描述;

implements关键字

implements用于实现接口,需要实现接口中的所有方法,可以同时实现多个接口。

extends关键字

extends用于继承父类或父接口,继承父类时只能是单继承。

class关键字

class用于声明类,访问权限可以是public或者默认权限,还可以指定为abstract、final,访问权限对于顶层类和内部类的限制是不同的。

instanceof关键字

1、比较运算符,运算符左边是一个指向一个对象的引用(左边就是一个变量名),右边是一个类名,运算符表示的意思就是:判断左边的对象的类型是不是右边的类;

2、使用instanceof关键字,可以实时判断一个对象的类型,就可以避免强制类型转换中容易出现的类型转换异常。

abstract关键字

1、abstract用于类表示这个类为抽象类,不能实例化。

2、抽象类,必须由子类去继承,继承的子类必须实现父类中所有的抽象方法,否则子类也是抽象的;

3、抽象函数必须放在抽象类中;抽象类中除了抽象函数,还可以定义所有一般类中可以定义的成员;

4、抽象类中可以不书写抽象方法;抽象类中必须有构造方法;抽象类一定是父类;

5、抽象类是父类,用来描述所有子类的共性信息的,只是描述的有些功能是不具体的;

6、abstract用于方法表示这个方法为抽象方法,只需声明,不用实现,由子类实现,抽象方法不能用private和static关键字。

什么时候用abstract关键字?

当事物的功能描述不清,只能表示有这个功能时,就应该使用抽象修饰该功能,这个功能就是抽象的功能;如果一个类中有抽象的功能,那么这个类也是抽象的类;不想实例化这个类(包括自己也不行),但是允许别人继承,也可以使用抽象类。

this关键字

1、表示自身所属对象的引用;哪个对象调用this,this就指向哪个对象;

2、Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this.

什么时候用this关键字?

1、通过this调用另一个构造方法,用法:this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。如果一个构造函数中有this()语句,就没有隐式三步,隐式三步在this语句调用的那个构造函数中,且this语句必须在第一行的位置;

2、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被私有化,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。(用来区分成员变量和局部变量)

3、在函数中,需要引用该函所属类的当前对象时候,直接用this。

super关键字

1、表示父类;可以在子类中调用父类的非私有成员和构造函数;

2、调用方法:

调用父类构造函数:super(参数);(父类中没有无参构造函数在父类中添加一个无参构造;在子类中手动调用有参构造函数)

调用父类成员变量:super.变量名;

调用父类成员函数:super.函数名(参数);

3、super关键和this作用类似,是被私有的成员变量或者成员方法变为可见,或者说用来引用被私有的成员变量和成员方法,不过super是用在子类中,目的是访问直接父类中被屏蔽的成员.

什么时候用super关键字?

如果父类中没有无参构造函数是,需要在子类中用super调用有参构造函数;