this super protected关键字的正确理解

super是为了获取被隐藏的直接父类属性,当this和super实际都是指向当前对象。

Test t = new Test(); t.test();  等价于 Test::test(final Test this), 在方法中, this相当于形式参数, 调用的对象是实际参数,通过super调用实例方法时,用的invokespecial指令, 来避免此时发生多态。本质上super并非一个合法的引用,并不能单独使用, 仅仅是一个起到指示作用的关键字,this和super都指向都一个对象,实际上也只存在一个对象, 不存在什么父类对象,只不过super指向分类的属性和方法, this.i和super.i是当前对象中两个名字相同的字段而已。


protected:

子类只能在自己作用范围内(同包或者子类类本身)访问自己继承父类的那个protected域,即使是在这个子类内new 一个该子类对象也访问不了), 同包是指使用方和父类同包    !!!

注意从内存的角度去理解访问权限!!

this super protected关键字的正确理解_第1张图片

你可能感兴趣的:(this super protected关键字的正确理解)