java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
来源:互联网 发布:网络推广效果评估 编辑:程序博客网 时间:2024/05/25 18:09
之前一直以为 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私有的类型,子类不能拥有,敬礼!
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方法是私有的
1 1
- java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
- 使用Java的子类调用构造方法super()和this()
- Java子类父类属性的覆盖
- Java子类父类属性的覆盖
- java中子类,父类的方法调用及属性值
- Java 子类调用this笔记
- Java抽象类及子类方法的调用顺序
- java父类构造函数调用子类覆盖方法
- 子类对象调用父类方法包含子类覆盖的方法
- Java 中父类怎么调用子类的方法?
- Java 中父类怎么调用子类的方法?
- 子类调用父类方法中的this
- JAVA子类方法覆盖父类方法
- Java调用子类重写方法
- Java子类与父类方法的隐藏和覆盖
- java 子类可以继承父类中的什么,子类中方法覆盖,final关键字的含义
- 子类父类方法与属性的调用(1)
- 子类父类方法与属性的调用(2).txt
- transform知识【学习总结】
- Android下面打印进程函数调用堆栈(dump backtrace)的方法(http://blog.sina.com.cn/happychang2007)
- 记忆化搜索简介
- SPI子系统驱动架构 - 驱动框架
- jQueryValidate 插件(表单验证功能)
- java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
- android WIFI to unity
- 数组特点
- 史上最严高考年,指纹、人脸识别成焦点
- -TreeMap
- XtraGrid 的格式设置
- Description Resource Path Location Type Java compiler level does not match the version of the insta
- 百度地图找医院前10家均错误 百度:没有竞价排名
- ubuntu学习笔记