java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
2016-07-05 14:16
771 查看
之前一直以为 this关键字 是指调用者对象,但是这次才真正理解,this代表当前对象,但是指向调用者对象,其实就是多态的用法,如下所示:B 继承了 A,在B 中调用A类的方法,在A 中用this 访问成员变量和方法,此时,如果用this访问成员变量,如下,this.s ,无论B 子类有没有 s属性,又或者s 的修饰符是 private 或者 public ,this.s 永远会打印出 当前类的 s属性值,原因:成员变量不能被重写,不能覆盖 ;再说,用this访问方法,如下所示: 在A 中 this.test()
, 请注意,此时,this代表A 类,但是指向B ,如: A a = new B() ; 因为 B 类 重写了父类的test方法,所以会调用B 的test 方法 ; 再如,将A 类的test方法改成 private类型的,此时 this.test()将调用A 类的 test方法,因为此时虽然B 类也有test方法,但是这个方法不是重写A类的方法,是一个自己独有的方法,因为父类是private私有的类型,子类不能拥有,敬礼!
打印结果为:
A
test_B
1,在B中调用A类的print方法,在A中 用this调用s属性和test方法,此时,this是 B对象,但是打印出了A中的属性,调用了 B 类的方法, 说明方法可以重写,属性不能重写
2,如果把 A类的test方法改为private,则会调用A类的 test方法,原因是因为 B类中的test方法不是重写的A类的test方法,可以说是一个新的方法,因为A类的test方法是私有的
, 请注意,此时,this代表A 类,但是指向B ,如: A a = new B() ; 因为 B 类 重写了父类的test方法,所以会调用B 的test 方法 ; 再如,将A 类的test方法改成 private类型的,此时 this.test()将调用A 类的 test方法,因为此时虽然B 类也有test方法,但是这个方法不是重写A类的方法,是一个自己独有的方法,因为父类是private私有的类型,子类不能拥有,敬礼!
public class HelloA { public static void main(String[] args) { new B().print(); } }
class B extends A{ private String s = "B" ; public void print() { super.print(); } public String test(){ return "test_B"; } }
class A { private String s = "A" ; public void print() { System.out.println(this.s); System.out.println( this.test()); } public String test() { return "test_A"; } }
打印结果为:
A
test_B
1,在B中调用A类的print方法,在A中 用this调用s属性和test方法,此时,this是 B对象,但是打印出了A中的属性,调用了 B 类的方法, 说明方法可以重写,属性不能重写
2,如果把 A类的test方法改为private,则会调用A类的 test方法,原因是因为 B类中的test方法不是重写的A类的test方法,可以说是一个新的方法,因为A类的test方法是私有的
相关文章推荐
- C#中this指针的用法示例
- C# 参考之访问关键字:base、this
- C#中this的使用实例分析
- Nodejs中的this详解
- javascript运行机制之this详细介绍
- 实例讲解JavaScript中的this指向错误解决方法
- JavaScript通过this变量快速找出用户选中radio按钮的方法
- JavaScript中this关键词的使用技巧、工作原理以及注意事项
- JavaScript知识点总结(十)之this关键字
- Javascript this 的一些学习总结
- JavaScript的this关键字的理解
- 浅谈javascript中this在事件中的应用
- PPK 谈 JavaScript 的 this 关键字 [翻译]
- js中this用法实例详解
- 关于function类中定义变量this的简单说明
- A标签中通过href和onclick传递的this对象实现思路
- 深入理解Javascript中this的作用域
- JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
- 深入浅析JavaScript系列(13):This? Yes,this!
- Javascript this关键字使用分析