java中子类与父类中隐含的this引用的分析

简介: /* 看一下下面的程序,看是否你的答案和运行的答案是否一致! */ class Parent{ public int x; public Parent p; public Parent(){} public Parent(int x){ 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: 0

Parent::h()
Child f()
Child g()
Parent::y()
LOOK HERE: 10//输出的是父类中的x

Parent::h()
Child f()
Child g()
Parent::y()
LOOK HERE: 10//输出的是父类中的x
*/
 

 

目录
相关文章
|
Java
Java中的this关键字
Java中的this关键字
118 1
Java的this关键字的使用
Java的this关键字的使用
151 3
|
Java API
深入理解Java中的this关键字
深入理解Java中的this关键字
338 0
|
Java
Java面向对象编程:就近原则与this关键字详解
Java面向对象编程:就近原则与this关键字详解
200 0
|
Java 编译器
【Java探索之旅】this 关键字 解决你的成员变量困惑
【Java探索之旅】this 关键字 解决你的成员变量困惑
110 0
|
Java
Java中this关键字
Java中this关键字
146 0
java202302java学习笔记第二十一天-继承中的构造方法和this关键字3小练习
java202302java学习笔记第二十一天-继承中的构造方法和this关键字3小练习
128 0
java202302java学习笔记第二十一天-继承中的构造方法和this关键字3小练习
|
存储 算法 Java
Java中的this关键字
Java中的this关键字
167 0
|
Java
Java面向对象基础3——构造方法及this关键字
Java面向对象基础3——构造方法及this关键字
234 0
Java面向对象基础3——构造方法及this关键字
|
存储 Java
Java基础this关键字01
Java基础this关键字01
Java基础this关键字01

热门文章

最新文章