首页 > 编程知识 正文

java关键字及其含义与用法,java关键字this的用途及相关特性

时间:2023-05-04 03:49:43 阅读:195851 作者:2114

【专家解说】:

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 会产生不可预知的结果。如果想改变基类的行为 重载他的函数 重新定义新的行为。

希望能帮到你

进一步了解相关内容你可以在站内搜索以下相关问题关于java的this关键字

下列选项中关于Java中this关键字的说法正确的是()

20)下列选项中关于Java中this关键字的说法正确的是()(选择一项...

关于java的this关键字

下列选项中关于java中this关键字的说法正确的是()。怎么办?

进一步了解相关内容你可以在站内搜索以下相关关键词java this关键字    java中的this关键字    java关键字    java final关键字    java static关键字    java关键字的含义    java super关键字    java native关键字

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。