[Java]this与多态

Java code

  
  
  
  
  1. /** 
  2.  *  
  3.  * @author Jacky 
  4.  * 在继承关系中我们用构造器创建对象时,会先调用父类的构造函数, 
  5.  * 然而在继承关系中this指针的指向又是如何呢,通过下面示例发现this指针总是指向运行时类型对象而不是编译时类型对象. 
  6.  *  
  7.  * 
  8.  */ 
  9. public class Main { 
  10.     /** 
  11.      * @param args 
  12.      */ 
  13.     public static void main(String[] args) { 
  14.  
  15.         Parent parent = new Child(); 
  16.         parent.display(); 
  17.  
  18.         //通过this实现的多态 
  19.         Child child = new Child(); 
  20.         //child.display(); 
  21.         Parent.getInstance().display(); 
  22.     } 
  23.  
  24.  
  25. abstract class Parent{ 
  26.     static Parent parent; 
  27.     public Parent() { 
  28.         System.out.println("The Parent constructor is called. this pointer is point to "+this.getClass().getSimpleName()); 
  29.         parent = this
  30.     } 
  31.  
  32.     public static Parent getInstance(){ 
  33.         return parent; 
  34.     } 
  35.  
  36.     public void display(){ 
  37.         System.out.println("The Parent display method is called."); 
  38.     } 
  39.  
  40. class Child extends Parent{ 
  41.     public Child(){ 
  42.         System.out.println("The Child  constructor is called. this pointer is point to "+this.getClass().getSimpleName()); 
  43.     } 
  44.     @Override 
  45.     public void display(){ 
  46.         System.out.println("The Child  display method is called."); 
  47.     } 
  48.  

打印结果

  
  
  
  
  1. The Parent constructor is called. this pointer is point to Child  
  2. The Child  constructor is called. this pointer is point to Child  
  3. The Child  display method is called.  
  4. The Parent constructor is called. this pointer is point to Child  
  5. The Child  constructor is called. this pointer is point to Child  
  6. The Child  display method is called. 


 

你可能感兴趣的:(java,this与多态)