this关键字、static、静态函数、final
this关键字
this关键字代表了所属函数的调用者对象。
this关键字的作用:
- 一个类中存在同名的成员变量与局部变量时,在方法的内部默认是访问局部变量的,可以通过this关键字指定访问成员变量的数据。
- this关键字还可以在构造函数中调用另外一个构造函数初始化对象。
this关键字调用构造函数注意事项:
- this关键字调用其他的构造函数时,必须要在第一个语句。
- this关键字调用构造函数时不能出现相互调用,会造成死循环。
static(静态、修饰符)
static修饰成员变量时,该成员变量的数据就是一个共享的数据。
静态成员变量的访问方式:
- 方式一:使用对象进行访问。对象.属性名
- 方式二:使用类名进行访问。类名.属性名
注意:
- 非静态成员变量不能类名直接访问,只能使用对象进行访问。
- 千万不能为了方便访问成员变量而随意使用static修饰,一定要是该数据是共享数据时才使用static修饰。
静态成员变量与非静态成员变量的区别:
- 作用上的区别:
- 静态成员变量的作用是共享一个数据给所有对象使用。
- 非静态成员变量的作用是描述一类事物的公共属性。
- 数量与存储位置上的区别:
- 静态成员变量是存储方法区内存中,而且只会存在一份数据。
- 非静态成员变量是存储在堆内存中,有n个对象就有n份数据。
- 生命周期的区别:
- 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
- 非静态的成员数据是随着对象的创建而存在,随着对象被垃圾回收器回收而消失。
静态函数
静态函数要注意的事项:
- 静态函数是可以使用类名或者对象进行调用的,而非静态函数只能通过对象调用。
- 静态的函数可以直接访问静态的成员,但是不能直接访问非静态成员。若静态函数中有对象,那么可以访问非静态数据。
- 原因:静态函数是可以使用类名直接调用的,此时可能还没有存在对象,而非静态的数据成员是随着对象的存在而存在的。
- 非静态函数可以访问静态与非静态成员。
- 原因:非静态函数只能由对象调用,当对象存在的时候,静态数据已于之前就存在,而非静态数据也随着对象的创建而存在。
- 静态函数不能出现this或者super关键字。
- 原因:因为静态函数可以使用类名调用,一旦使用类名调用,此时不存在对象,而this关键字代表了一个函数的调用者对象,这时产生冲突。
静态数据的生命周期:
- 静态的成员变量数据是优先于对象存在的。(可以解释以上全部原因)
static什么时候用来修饰函数?
如果一个函数没有直接访问到非静态的成员,那么可以使用static修饰。一般用于工具类型的方法。
final(最终、修饰符)
final关键字的用法:
- final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。
- final关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。
- final关键字修饰一个函数的时候,该函数不能被重写。
- final关键字修饰一个类的时候,该类不能被继承。
常量的修饰符一般为: public static final
本文标题:this关键字、static、静态函数、final
本文链接:https://www.haomeiwen.com/subject/fyricttx.html
网友评论