this、static、super、final关键字

创建对象分为四步:

1.分配对象空间,并将对象成员变量初始化为0或非空

2.执行属性值的显式初始化

3.执行构造方法

4.返回对象的地址给相关变量

this关键字:

this的本质是“创建好的对象的地址”,在构造方法中使用this代表“当前对象”。

this最常见的用法:

1.在程序产生二义性之处,应用this指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。

2.使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中使用,并且必须位于构造方法的第一句。

测试实例:

 

 

3.this不能用于static方法中。  结合之前文章的内存分析图

 

如果在study写this.id;在对象中会很容易找到id变量,如果在方法区中使用this,因为存储的是类信息而不是对象,所以找不到,在static方法中不能调用this。

 

static关键字:

在类中,用static声明的变量是静态成员变量,也称类变量。类变量的生命周期和类相同,在整个应用程序执行周期内都有效。

static修饰的成员变量和方法,从属于类;普通变量和方法从属于对象。

 

 

 

内存分析:

静态初始化块构造方法用于对象的初始化!静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非static成员。

注意事项(学完继承再来看这里):1.上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到目标类的静态初始化块为止。

2.构造方法执行顺序和上面顺序一样。

 super关键字: 是直接父类对象的引用。可以通过super来访问被子类覆盖的方法和属性。

 

构造器的第一行代码没有显式的调用super( )或者this( ),那么java默认调用super(),含义是调用父类的无参数构造方法,super( )可以省略。

 

 

final关键字:1.修饰变量:被修饰的变量不可改变,一旦赋了初值,不能被该变

 

2.修饰方法:该方法不可被子类重写,但是可以被重载

3.修饰类:被修饰的类不能被继承,如String类,Math类

 

来源:http://www.cnblogs.com/laurarararararara/p/11331134.html


智能推荐

final关键字与static对比

final关键字与static对比 static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次 例如图中所示,被static修饰的变量j,虽然创建两个对象,对值并没有变化...

static和final关键字

static和final关键字 static关键字 创建时间:被static修饰的属性或方法会在类加载时创建,直到程序结束 操作对象:用来修饰成员变量和方法(一般写在权限修饰符之后) 补充: 静态资源是优先于对象进行加装的,随着类的加装而加装 静态资源会被全局共享,并且唯一(一处修改,全部改变) 静态资源也叫做类资源,全局唯一,被全局所有对象共享 static不能和this或者super共用,因为...

05-三大特征、变量、构造方法this、static、final关键字

1、概念 异常:Java代码在运行时期发生的问题叫做异常,当发生问题时,就会创建异常对象并抛出异常信息(异常的原因及位置) 2、异常的分类 Error,Exception extends Throwable extends Object RuntimeException extends Exception Error:往往是JVM所在的系统出现问题,我们无法针对处理,只能修正代码。内存溢出错误Ou...

构造函数+this关键字+super关键字

构造函数的意义在于可以创建方法对象(new)时就传参。 如普通函数需要变量名.属性名赋值时,构造函数已经解决掉赋值问题了。 构造方法没有返回值类型,创建对象一结束方法就执行完毕,也没有返回值。 构造函数的方法名需要和类名相同 一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的 构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。最好添加getxxx和setxxx封装 ...

this关键字static关键字

this关键字: 内存图解: this语句的第二个功能:this也可以在构造函数中调用其他构造函数。 注意:只能定义在构造函数的第一行,因为初始化动作要先执行(也就是java的规则,以后面的初始化规则为主,省的覆盖) 一般函数不能调用构造函数,但是构造函数可以调用一般函数,构造函数也可以调用其他构造函数,就用到了this语句。 this只要方法当中用到了本类对象全是this来表示对象。 Stati...

猜你喜欢

super与this关键字

作者:杨裙 本次任务完成时间:2019年5月15日 开发工具与关键技术:MyEclipse 10、Java 一、super关键字 1、super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。 2、任何类的构造方法中,若是构造方法的第一行代码没有显示的调用super();那么java默认的都会调用super();作为父类的初始化方法,可以加super()或不加super...

继承,super与this关键字

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭~ http://blog.csdn.net/xiaoduan_/article/details/79327804 继承 方法重写的语法规则 返回值类型相同 方法名 相同 参数类型 个数 顺序 都要与父类继承的相同 方法重写与方法重载的对比 访问修饰符 子类访问父类的成员用关键字super 继承后的初始化顺序 super 子类的构造过...

this,super关键字区别

属性的区别: this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。 方法的区别: this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。 构造的区别: this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。 其他区别: this表示当前对象。super不能表示当前对象 1、thi...

PowerDesigner 15.1生成数据库报表文件

环境:PowerDesigner 15.1 问题:生成数据库报表文件 解决: 当设计出数据库以后,有一份正规的DOC文件是很必要的,下面讲解如何生成报表。 1 新建立报表文件右键单击模型,选择New------->Report,弹出如下界面。 2 输入报表名称,选择报表模板。 3 拖拉需要显示的部分到报表输出选项。 4 修改输出选项的内容在内容上单击右键,选择Format,可以修改相应项目的...

Android  蓝牙调试心得

       废话不多说,因为工作关系,这次接触到蓝牙功能开发,下面是我第一次蓝牙开发的经验总结,对于将要从事蓝牙开发的人,或许有些帮助。         Android蓝牙分为传统蓝牙开发和ble蓝牙开发。下面就有小伙伴疑问了,我该学习哪个呢,其实不然,只要你学会其中一种开发模式,对于另外一种开发模式无师自通。还有,...

问答精选

XGBoost for multilabel classification?

Is it possible to use XGBoost for multi-label classification? Now I use OneVsRestClassifier over GradientBoostingClassifier from sklearn. It works, but use only one core from my CPU. In my data I have...

Javascript generated content detection using BeautifulSoup and Selenium

I'm trying to get all the books regarding computer science from Pearson's website (starting from this url: https://www.pearson.com/us/higher-education/professional---career/computer-science/computer-s...

how to give priority to the threads waiting in a semaphore?

I have used a semaphore to restrict the number of threads accessing a function. I want the thread to be awakened next should be chosen by some priority which i will be giving,not by default way that s...

Password for ec2-user on AWS Cloud9

I am trying to run $ sudo su in the terminal of AWS Cloud9. I get prompted for the password for the ec2-user. Any ideas what this might be? Might be worth noting that prior to coming up against this i...

DAO-object gets from DB only limited count of objects

DAO-object gets from DB only limited count of objects. Only Clear - Build - Deploy can help. I have DB with connected by foreign keys entities. One of them is User. Other one - Book. Those entities ar...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答