关于JAVA的this关键字
关于JAVA的this关键字【专家解说】:1.this表示的是指向一个实例吗。如果不是指向一个实例,那么为什么this可以参与instanceof运算或当作引用参数传进方法里,su
1.this表示的是指向一个实例吗。如果不是指向一个实例,那么为什么this可以参与instanceof运算或当作引用参数传进方法里,super为什么不能?
-- this表示的是指向一个实例。 System.out.println(s instanceof SubT3);//false 这个地方之所以返回false 是因为 s的类型是 SuperT3 所以 “s instanceof SubT3” 是返回false
2.如果this表示当前对象,那么我在第4行new的SubT3的实例,在第14行为什么没有打印出peter呢。
--首先说this的类型是SubT3 这是确定的,所以this instanceof SuperT3 和 this instanceof SubT3都是true. 第14行打印出Jack是正确的。要从内存结构看,子类是无法覆盖父类的成员变量的,所以对于SubT3 来说里面有两个 name, 一个是Jack 一个是peter。那么究竟是调用哪个name呢?是调用基类的name,因为成员变量是不能重载的,也就是说 调用成员变量的函数在基类中 则使用基类的成员变量 调用成员变量的函数在子类中则使用子类中的成员变量。 如果想要 输出peter,只需要在SubT3 重载func 也就是将func的代码复制在SubT3中 就会输出peter. 记住:成员变量是不会被重载的 只有 函数会被重载。
3.如果在第14行时,this只表示SuperT3的引用(我也不知道到底引用什么),那为什么第16行没有打印出与第6行相同的结果呢?
--看第2条的回答 this不是superT3 是 subT3 只是因为成员变量是无法重载的 依赖于调用它的函数所在类。
另外说明一下,如果基类的成员变量可以被同名的子类中成员变量替换,那会产生灾难的后果。比如基类中有个数组 里面存储了一些 标识 比如 0 1 2 而在子类中 声明了同样一个名字的数组 里面是 3 4 5 那么基类运行到基类的方法的时候 本来处理 0 1 2 现在却处理 3 4 5 会产生不可预知的结果。如果想改变基类的行为 重载他的函数 重新定义新的行为。
希望能帮到你
-
该图是我国某地生态农业系统图。读图,回答13~14题。 小题1:图中各字母代表的含义,正确的是 ①a一粮2024-08-17
-
93号、90号汽油其中的标号有什么含义,0号柴油、-10号柴油呢?2024-08-17
-
求教:无负压供水设备型号的含义是什么2024-08-17
-
请教大虾 无负压给水供水设备 50ZWG2/5-13 型号含义是什么2024-08-17
-
求教:无负压供水设备型号的含义是什么2024-08-17
-
“低碳新生活”作文征文要求思考低碳生活与节能减废的含义,宣传绿色环保,探讨低碳节...2024-08-17
-
无负压供水设备型号WWG20-40-2的含义是什么,WWG代表什么2024-08-17
-
请问石油钻井中的钻具代码及其具体含义,以及配合接头的数字具体代表什么意思?求高手解答!2024-08-17
-
“风能进,雨能进,国王不能进”这个典故有什么含义2024-08-17
-
绿色建筑的含义???2024-08-17
-
作文“门其实开着”有哪几层含义?2024-08-17
-
请教非晶硅薄膜太阳能电池中的 P N I 都是什么含义?2024-08-17
-
谁知道在石油工程中 油压,套压,流压,静压的概念和地理含义2024-08-17
-
学会计~会计科目的意思及借贷方含义2024-08-17
-
工科的具体含义是什么?2024-08-17