class test1{
  //Body1...
  public void fun(){
    //Body2...
  }
}
class test2 extends test1{
  //Body3...
  public void fun(){
    //Body4...
  }
}
class test3{
  public static void main(String [] args){
    test1 test = new test2();//test实际类为test2而引用类为test1
    //test1 test = (test1) new test2();是否跟上一行一样?
    t1.fun();//调用实际类test2的fun();
    (test1)test.fun();//为什么强制类型转换后还调用的test2的fun();?
  }
}
 接口和抽象类存在的意义是什么?
为什么JAVA中有这两个东西
就是说不用接口有什么后果
比如T1接口中有f();
class test4 implement T1{
  ...
  ...f(...){
     ...
  }
}
我不用T1接口 不行么?

解决方案 »

  1.   

    顺便 问一下
    帖子里面的JAVA代码 只能自己空格对齐么?
    回帖是一种美德!传说每天回帖即可获得 10 分可用分!
      

  2.   

    由于JAVA只可以单继承
    而C++可以实现多继承
    JAVA用接口实现多继承 
      

  3.   

    接口和抽象类都是为了更好的可扩展性吧
    就象2F说的JAVA本身只支持单继承,用接口实现多继承至于你的程序,new出来的实际对象始终是test2的,你的几种写法实际都是父类引用指向子类对象吧,调用fun()的时候有多态的存在,所以都会调用test2中重写的fun();
      

  4.   

    我也是才学 今天才看到接口   java只能继承一个夫类  如果要继承多个类是不行的 这个时候就可以应用到接口
    抽象类定义的是抽象方法  有什么不同现在我也了解得不是很清楚
      

  5.   


    // [code=Java]  Your code  
    [/code]
      

  6.   

    1.代码中的问题:多态,这是规律,我不知道怎么解释,自己去网上查查
    2.接口和抽象类存在的意义是什么?
       本论坛有人总结了,见帖子 http://topic.csdn.net/u/20081008/21/dda07aa2-e8a5-417c-88bc-6814b41c5835.html?seed=1986272069
    3.就是说不用接口有什么后果?
        接口是为了实现多继承的。不用的后果?很严重!
      

  7.   

    接口:在一个类里,只有申明没有实现。
    抽象类:是以abstract 定义的,里面至少有一个抽象方法。