日期:2014-05-20  浏览次数:20603 次

高手给就是一下 一句代码的意思 在线等
abstract   class   Over{
abstract   public   void   fun1();
}
class   Oouter   {
public   static   void   main(String   []   args){

  class   Iinner   extends   Over{
public   void   fun1(){
System.out.println( "implement   for   fun1 ");
}
}
  new   Oouter().callIinner(new   Iinner());
}
public   void   callIinner(Over   o){
o.fun1();
}
}


这个代码中public   void   callIinner(Over   o){
o.fun1();
这句小括号中的定义是怎么理解的     那个Over是个类啊   怎么还能定义一个O呢百思不得其解   忘高手讲解一下   能给个例子就更好了     先谢谢了!

------解决方案--------------------
Over o 参数撒, 传递一个 Over 类型的 对象 o ,
new Oouter().callIinner(new Iinner()); 这里面的new Iinner()的类型必须是 Over
------解决方案--------------------
向上转型
------解决方案--------------------
类和接口也可以用来声明类变量 传进去的参数必须是实现了该类的对象 或者是该类的子类的对象 或者是实现了该接口的类的对象
------解决方案--------------------
我也不是很理解,可不可以说明白些?
------解决方案--------------------
Over 是你上面自定义的类型,即
abstract class Over{
abstract public void fun1();
}

其实你可以将自定义类型当作内置类型一样,只不过,内置类型是系统自带的
而自定义类型是自己定义的而已。
------解决方案--------------------
多态性使得基类的指针可以指向继承类
因为内部类new inner 继承了Over这个类
所以o可以指向inner的实例变量
由运行时刻绑定来决定具体调用哪个继承类中的方法
------解决方案--------------------
参数列表,同(String name), Over是参数类型,o 是参数名称
------解决方案--------------------
学习中
------解决方案--------------------
public void callIinner(Over o){...}中 Over o 是传入的参数

我们在调用这个方法的时候,传入的参数必须是继承 Over 类的子类对象,
比如:

public class OverImp extends Over {...} // 继承Over的类

// 下面调用callIinner(Over o)方法
Oouter outer = new Oouter(); // 初始化类Oouter
OverImp overImp = new OverImp(); // 初始化类OverImp

outer.callIinner(overImp); // 注意传入的参数,是继承Over的类OverImp的对象