向上转型后,this关键字指向哪个对象?

ID:16369 / 打印

向上转型后,this关键字指向哪个对象?

this关键字的用法探讨

在讨论this关键字的用法之前,我们先来了解一个与之相关的概念:向上转型。

向上转型是指父类对象可以赋值给子类对象的过程,而this关键字不会受到此操作的影响。为了更清楚地理解这一点,让我们来看一个例子:

java

public class A {     public int i = 10;      void print() {         System.out.println("我是A中的函数");     } }  class B extends A {     public int i = 20;      void print() {         System.out.println("我是B中的函数,我重写了A中的同名函数");     }      void speak() {         System.out.println("向上转型时我会丢失");     } }  public static void main(String[] args) {     B b = new B();     A a = b; // 此处向上转型     b.print();     System.out.println(b.i);     b.speak();     a.print();     System.out.println(a.i);     ((B) a).speak(); // a在创建时虽然丢失了speak方法但是向下转型又找回了 }

在这个例子中,b对象b被向上转型为a对象a。此时,a对象拥有b对象的所有 public成员,包括重写了print()方法的同名方法。然而,a对象不拥有b对象特有的方法speak()。

当我们调用a.print()时,实际上调用的是a类的print()方法,因为a是a的对象。同样地,当我们调用a.i时,实际上访问的是a类的i属性,因为a是a的对象。

需要注意的是,即使a对象在创建时丢失了speak()方法,我们仍然可以通过向下转型将其取回。示例中的((b) a).speak()调用表明,我们可以使用向下转型将a对象转换为b对象,从而访问b对象特有的成员。

上一篇: 字符怎么转字符串数组 java
下一篇: java 数组怎么添加到集合中

作者:admin @ 24资源网   2024-11-27

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。