假设我们有下一个情况:
家长A:
class A{
public A(){}
public doSomething(){
System.out.println(this.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
带着孩子B级:
class B extends A{
public B(){}
public void doSomething(){
super.doSomething();
System.out.println(this.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
和主要课程:
class Main{
public static void main(String[] args){
A ab=new B();
ab.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,结果是
B
B
Run Code Online (Sandbox Code Playgroud)
为什么this在超类A中引用,B当引用是类型A 时返回为类?
我有一个抽象类飞行.Flight包含调用私有方法调度的方法schedule()(最终Flight f)
public void schedule()
{
schedule(this);
}
private void schedule(final Flight f)
{
new Timer().schedule(new TimerTask()
{
@Override
public void run()
{
f.checkIn();
updateList();
}
}, this.getDate());
}
Run Code Online (Sandbox Code Playgroud)
现在让我说我有一个扩展Flight的类SouthWestFlight
Flight f = new SouthWestFlight(); //ignore the missing params doesn't matter for example
f.schedule();
Run Code Online (Sandbox Code Playgroud)
这会将Flight的实例或SouthWestFlight的实例作为schedule方法中的参数传递吗?