java中多态的this指向问题
2016-10-06 14:18
337 查看
这是我在CSDN的第一篇博客,日后继续记录自己所学的点点滴滴,以及自己的理解感悟,或者遇到的各种坑。如有错漏,望众师友批评指正。
package com.duotai2;
public class Servlet {
public void service() {
System.out.println("Servlet.service()");
doGet();
}
public void doGet() {
System.out.println("Servlet.doGet()");
}
public static void main(String[] args) {
Servlet s = new MyServlet();
s.service();
}
}
class MyServlet extends Servlet {
public void doGet() {
System.out.println("MyServlet.doGet()");
}
}
console显示结果为:
Servlet.service()
MyServlet.doGet()
上面的存在多态,满足3个条件,1.要有继承2.要有重写方法,3父类引用子类对象eg:上面的Servlet s = new MyServlet();。满足多态this指向最终MyServlet类的对象。
不满足多态this指向调用当前方法的对象,如下就是。实际上每个方法都有两个隐式参数this和super
如下的例子:没有重写方法。
package com.duotai2;
public class Servlet {
public void service() {
System.out.println("Servlet.service()");
doGet();
}
public void doGet() {
System.out.println("Servlet.doGet()");
}
public static void main(String[] args) {
Servlet s = new MyServlet();
s.service();
}
}
class MyServlet extends Servlet {
public void goGet() {
System.out.println("MyServlet.doGet()");
}
}
console显示结果为:
Servlet.service()
Servlet.doGet()
package com.duotai2;
public class Servlet {
public void service() {
System.out.println("Servlet.service()");
doGet();
}
public void doGet() {
System.out.println("Servlet.doGet()");
}
public static void main(String[] args) {
Servlet s = new MyServlet();
s.service();
}
}
class MyServlet extends Servlet {
public void doGet() {
System.out.println("MyServlet.doGet()");
}
}
console显示结果为:
Servlet.service()
MyServlet.doGet()
上面的存在多态,满足3个条件,1.要有继承2.要有重写方法,3父类引用子类对象eg:上面的Servlet s = new MyServlet();。满足多态this指向最终MyServlet类的对象。
不满足多态this指向调用当前方法的对象,如下就是。实际上每个方法都有两个隐式参数this和super
如下的例子:没有重写方法。
package com.duotai2;
public class Servlet {
public void service() {
System.out.println("Servlet.service()");
doGet();
}
public void doGet() {
System.out.println("Servlet.doGet()");
}
public static void main(String[] args) {
Servlet s = new MyServlet();
s.service();
}
}
class MyServlet extends Servlet {
public void goGet() {
System.out.println("MyServlet.doGet()");
}
}
console显示结果为:
Servlet.service()
Servlet.doGet()
相关文章推荐
- 在java多态中,this问题 解释
- 如何解决attachEvent函数时,this指向被绑定的元素的问题?
- 解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
- (生成excel)解决getOutputStream() has already been called for this response java getOutputStream()的问题
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的
- java in think 多态问题
- java多态要注意的一个问题
- java多态-继承相关问题的探讨
- JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
- JavaScript call apply使用——JavaScript对象的方法绑定到DOM事件后this指向问题
- 多态的三个条件: 1、要有继承 2、要有重写 3、父类引用指向子类对象----java
- 解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
- 关于java多态的问题
- jQuery AJAX回调函数this指向问题
- actionscript中this和super的指向问题
- 如何解决attachEvent函数时,this指向被绑定的元素的问题?
- jQuery AJAX回调函数this指向问题
- 解决attachEvent中this指向问题
- Java集合中的泛型与多态问题
- java中多态问题