首页 > 代码库 > java中子类与父类中隐含的this引用的分析
java中子类与父类中隐含的this引用的分析
/* 看一下下面的程序,看是否你的答案和运行的答案是否一致!*/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*/
java中子类与父类中隐含的this引用的分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。