/*看一下下面的程序,看是否你的答案和运行的答案是否一致! */ class Parent{public int x;public Parent p;public Parent(){}public Parent(int x){this.x=x; p=this;}public void f(){System.out.println("Parent::f()"); }public void g(){System.out.println("Parent::g()");}public void h(){System.out.println("Parent::h()");f();g();y();System.out.println("LOOK HERE: " + x);}private void y(){System.out.println("Parent::y()");} };class Child extends Parent{public int x;public Child(){}public Child(int x){ super(x+5);this.x=x;}public void f(){System.out.println("Child f()");}public void g(){System.out.println("Child g()"); } };public class ThisDemo {public static void main(String[] args) {Child ch=new Child();ch.h();System.out.println();ch=new Child(5);ch.h();System.out.println();ch.p.h();}}其实c++this思想和java中的this思想差不多,就是在多态的情况下有一些不同,c++基类中的方法如果没有有virtual修饰,那么派生类的重写该方法时就不是覆盖,不会具有包含多态(c++多态的种类:强制多态、重载多态、类型参数化多态、包含多态(就是通过用virtual))!然而在java中,如果子类中重写了父类的方法,那么就是覆盖,就会产生像c++使用virtual的多态!c++样例请点击这里:here! 输出结果: /* Parent::h() Child f() Child g() Parent::y() LOOK HERE: 0Parent::h() Child f() Child g() Parent::y() LOOK HERE: 10//输出的是父类中的xParent::h() Child f() Child g() Parent::y() LOOK HERE: 10//输出的是父类中的x */