JavaBean & super & this
来源:互联网 发布:面包车拉货选什么软件 编辑:程序博客网 时间:2024/06/05 02:40
JavaBean起初还是在j2ee的web开发中用的比较多
从知乎上看到一个比较有趣的比喻:
你去门口煎饼摊买煎饼,老板,来一个加蛋加火腿的煎饼
第二天很饿,老板,来个加俩蛋加火腿的煎饼,能做吗?老板说,就是十个也能做
...
几年后,老板做大了,你还去,老板,还有煎饼吗?老板说,还有
从这可以看到,无论使用Javabean的人怎么变了,Javabean提供的通用、基本的功能-煎饼,是一直都在的
2.this
this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。
由于静态方法不属于任何一个类,是通过类调用的方法,无需实例对象,因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。
this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
<pre name="code" class="java">public class Text {private int number;private String username;private String password;private int x = 100;public Text(){this(0,"未知","空");//this调用别的构造方法}public Text(String name){this(1,name,"空");}public Text(int n){number = n;//或者是this.number }public Text(int n,String username,String password){this.username = username;this.password = password;}public static void main(String[] args) {// TODO Auto-generated method stub //第一个无参构造实例化,又利用this调用了第四个构造函数 Text t1 = new Text(); //第二个构造函数实例化,this调用了第四个 Text t2 = new Text("游客"); t1.outinfo(t1); t2.outinfo(t2);} private void outinfo(Text t) {System.out.println("---------");System.out.println(t.number);System.out.println(t.username);System.out.println(t.password);f();//this.f()亦可} private void f() { //局部变量与成员变量同名,以this引用成员变量int x;x = this.x++;System.out.println(x);System.out.println(this.x);}}
new了第一个无参构造函数的实例对象
第一个无参构造函数里通过this调用了第四个构造函数
在调用时,将 0,"未知","空" 传给了第四个构造函数
而第四个构造函数里,通过this,将未知和空传给了成员变量username和password,他们被赋值了
这个实例对象再调用了outinfo方法,打印:
------
number,这里虽然第一个无参构造传了一个0给第四个构造函数,但第四个构造没有赋值给成员变量number,虽然这里打印出来的是0,但这个0是默认初始化的值
username 未知
password 空
调用方法f(),f内有一个局部变量和成员变量同名,通过this引用成员变量的值赋给局部变量,
x=this.x++ ;这里先把成员变量的值100赋给局部变量,下面第一个打印就是100,然后成员变量自增了,变为101,所以后一个打印的是101
第二个构造函数的实例化,传进去一个参数 游客,同时把 1,游客,空 传给第四个构造函数
后面流程一样,但是同样的,这个1没有传给number,打印的还是初始值0
总结一下,this的使用场合
第一、通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。安卓里需要上下文context时经常传一个this的参数
3.super
super和this有些类似,但super是子类中用来引用父类中被屏蔽的方法,同时引用的直接父类,最近的一个。
注意,如果是调用父类的构造方法,必须放在首位,因为构造函数是用来初始化的,放在后面初始化就没意义了
第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行(this相同)。
第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。
第三、当子类的成员方法覆盖(重写)了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。
- JavaBean & super & this
- JavaBean & super & this
- JavaBean & super & this
- JavaBean & super & this
- this super
- this super
- this & super
- this & super
- this super
- this super
- this super
- super & this
- this&super
- this super
- this & super
- this super
- this,super
- this super
- My97DatePicker时间控件的引用
- linux 流编辑器(stream editer)sed 用法
- 《高性能MySql》学习笔记 持续更新
- JQUERY实现下拉菜单
- ARP协议(ARP脚本抓取主机MAC的实现)
- JavaBean & super & this
- Android实现webview
- 数学问题——找“自守数”
- 日语语法(五):副词
- grep 命令详解
- 算法第4版(谢路云译)学习笔记(3) -- 字符串连接操作的时间复杂度
- 音频,视频时间戳计算及每帧播放时间
- [LeetCode] Minimum Window Substring
- 区块链开发专题(数字货币转账手续费是多少是如何计算的)