zoukankan      html  css  js  c++  java
  • 关于this

    this是指当前类的实例对象

     1 public class A {
     2     public void init()
     3     {
     4         System.out.println("1、A init");
     5         this.dosomething();
     6     }
     7        
     8     public void dosomething()
     9     {
    10         System.out.println("2、A dosomething");
    11     }
    12 }
     1 public class B  extends A{
     2     public void init()
     3     {
     4         System.out.println("3、B init");
     5         super.init();
     6     }
     7        
     8     public void dosomething()
     9     {
    10         System.out.println("4、B dosomething");
    11     }
    12        
    13     public static void main(String[] args) {
    14         B b=new B();
    15         b.init();    
    16     }

    为什么会是这个结果??

    这是因为如果是无参函数,那么有一个默认的参数是this,也就是类的实例对象

        super.init(),实际是super.init(b)

    那么

        在类A中this.dosomething,就是A.dosomething(),所以结果就是3 1 4

    public String name="tom";
        public void init()
        {
            System.out.println(this.name);
        }
    public String name="jack";
        public void init()
        {  
            super.init();
            System.out.println(this.name);
        }
     
        public static void main(String[] args) {
            B1 b=new B1();
            b.init();  
             
            System.out.println(b.name);
             
            A1 a=new B1();
            a.init();  
             
            System.out.println(a.name);
        }

    这里的运行结果为什么又不符合上面说的默认参数是一个this的实例对象呢?

    这是因为:

    成员变量编译运行看左面

    成员方法编译看左面,运行看右面

  • 相关阅读:
    java监控Linux磁盘空间的使用情况
    报道篇
    标签详解
    selectors模块
    [Python 多线程] RLock可重入锁
    Mysql中索引的 创建,查看,删除,修改
    openpyxl模块的使用
    Oracle中row_number()、rank()、dense_rank() 的区别
    python面试题
    sql 用Group by分组后,取每组的前几条记录
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4079447.html
Copyright © 2011-2022 走看看