您的位置:首页 > 编程语言 > Java开发

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息