帮我看个java程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:42:24
class Cycle {
private String name = "Cycle";
public static void travel(Cycle c) {
System.out.println("Cycle.ride() " + c);
}
public String toString() {
return this.name;
}
}

class Unicycle extends Cycle {
private String name = "Unicycle";
public String toString() {
return this.name;
}
}

class Biking {
public static void ride(Cycle c) {
c.travel(c); 这个c是那里来的哦 简单解释下怎么运行的
}
public static void main(String[] args) {
Unicycle u = new Unicycle();
ride(u);

}
}

public static void ride(Cycle c) {
c.travel(c); //这个c是那里来的哦 简单解释下怎么运行的
}
在这个静态方法中,c是一个Cycle类的引用型变量的形参,c.travel(c);是通过传递进来的实参来调用Cycle类中的travel方法,而在travel方法:
public static void travel(Cycle c) {
System.out.println("Cycle.ride() " + c);
}
同样需要一个Cycle类作为参数,也就是c本身!

一楼正解
public static void ride(Cycle c)中的Cycle c传值进来的

c 被作为参数传到ride()方法里面了,c的类型是Cycle类型

这个其实很好理解啊,其实c.travel(c)里的两个c都是同一个Cycle对象,也就是public static void ride(Cycle c) 里的这个c,之所以括号里要传c因为public static void travel(Cycle c)里的参数是一个Cycle对象,由于travel()是静态方法所以也必须由静态方法ride()来调用。

这个C应该就是 那个形参
它支持travel();方法的调用

他的运行过程是
在main()函数中调用ridde(u)的时候,将C=u.这时由于Unicycle继承了Cycle类,所以声明为Unicycle类的对象是能运行的。

再转到ride()函数中,他做的事情是调用travel();函数,然后又转到travel中,这样这个程序就运行完了。

总体上来说这是一个关于继承调用的程序,你不明白,可能主要是那个参数的问题。其实,你将它换一个字母就行啦!

public static void main(String[] args) {
Unicycle u = new Unicycle();
ride(u);

就是这个U..