
关于Java初级的问题,希望能比较详细解答。 以下是三个类,其中的v.drivedByFemaleDriver(this);
以下是三个类,其中的v.drivedByFemaleDriver(this);this怎么理解?这个位置换成什么变量也能正常运行?publicclassDriverTes...
以下是三个类,其中的v.drivedByFemaleDriver(this);
this怎么理解?这个位置换成什么变量也能正常运行?
public class DriverTest
{
public static void main(String[]args)
{
Driver aDriver=new FemaleDriver();
Vehicle xVehicle=new Car();
aDriver.dirves(xVehicle);
}
}
////////////////////////////////////////////////////////////////////////////
public class FemaleDriver extends Driver
{
public FemaleDriver(){}
@Override
public void dirves(Vehicle v)
{
v.drivedByFemaleDriver(this);
}
}
////////////////////////////////////////////////////////////////////////////
public abstract class Driver
{
public Driver(){}
public abstract void dirves(Vehicle v);
}
////////////////////////////////////////////////////////////////////////////
public class Car extends Vehicle
{
public Car(){}
@Override
public void drivedByFemaleDriver(Driver who)
{
System.out.println("A Female driver drives a car.");
}
@Override
public void drivedByMaleDriver(Driver who)
{
System.out.println("A Male driver drives a car.");
}
}
////////////////////////////////////////////////////////////////////////////
public abstract class Vehicle
{
/* private String type;*/
public Vehicle(){}
/* public Vehicle(String s)
{
type=s;
}*/
public abstract void drivedByFemaleDriver(Driver who);
public abstract void drivedByMaleDriver(Driver who);
} 展开
this怎么理解?这个位置换成什么变量也能正常运行?
public class DriverTest
{
public static void main(String[]args)
{
Driver aDriver=new FemaleDriver();
Vehicle xVehicle=new Car();
aDriver.dirves(xVehicle);
}
}
////////////////////////////////////////////////////////////////////////////
public class FemaleDriver extends Driver
{
public FemaleDriver(){}
@Override
public void dirves(Vehicle v)
{
v.drivedByFemaleDriver(this);
}
}
////////////////////////////////////////////////////////////////////////////
public abstract class Driver
{
public Driver(){}
public abstract void dirves(Vehicle v);
}
////////////////////////////////////////////////////////////////////////////
public class Car extends Vehicle
{
public Car(){}
@Override
public void drivedByFemaleDriver(Driver who)
{
System.out.println("A Female driver drives a car.");
}
@Override
public void drivedByMaleDriver(Driver who)
{
System.out.println("A Male driver drives a car.");
}
}
////////////////////////////////////////////////////////////////////////////
public abstract class Vehicle
{
/* private String type;*/
public Vehicle(){}
/* public Vehicle(String s)
{
type=s;
}*/
public abstract void drivedByFemaleDriver(Driver who);
public abstract void drivedByMaleDriver(Driver who);
} 展开
4个回答
展开全部
this只的是当前类,在这个程序中就指的是FemaleDriver ,替换的话,你可以用new FemaleDriver()来替换
这个程序主要是让你理解多态的
这个程序主要是让你理解多态的
追问
谢谢了,果然给力。
不过为什么非得在里面new出来个对象呢,(Driver FemaleDriver)为什么不行呢?
万分感谢。学的还是有点不太明白。希望多多指点。
追答
Driver FemaleDriver的涵义是,声明一个名称为FemaleDriver的Driver类型的变量,而可以看到public abstract void drivedByFemaleDriver(Driver who);需要一个类型为Driver的对象,而FemaleDriver继承自Driver,根据多态理论,drivedByFemaleDriver就可以传入类型为FemaleDriver的对象,这里我一再强调,需要的是对象,所以,我们需要使用new关键字实例化一个类型为FemaleDriver的对象
展开全部
this,就是FemaleDriver 本身对象,也就是DriverTest中的aDriver,aDriver在调用自身的方法dirves时同时传了一辆车给她,同时她又用了这辆车的一个方法输出这车是正在被一个男人开还是一个女人开把自己给传了过去,而这个司机是个女的,所以她就用了drivedByFemaleDriver这种女人开车的方法开车,然后别人就知道了是个女人在开车。
this要换必须是个会开车的人,也就是必必须继承Driver的一类人
当然如果你想用 class Computer extends Driver{} 这个也可以改成Computer的实例对象
this要换必须是个会开车的人,也就是必必须继承Driver的一类人
当然如果你想用 class Computer extends Driver{} 这个也可以改成Computer的实例对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this就是FemaleDriver这个类的实例呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那个this表示FemaleDriver 对象本身
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询