1:希望哪位大虾给解释一下什么多态, 最好能举例说明
2;老师昨天布置了个作业,让写 一段代码 ,一个shape基类2个子类,一个实现类,要体现出多态性
我写了一段 但是不知道是否符合这个要求(主要是对多态迷糊);代码如下
abstract class Shape
{
abstract void method();
}
class Rectangle extends Shape
{
int l=4;
int w=3;
void method()
{

System.out.println("222");

}

}
class Cir extends Shape
{
void method()
{
System.out.println("heih3213123");
}


}
public class Test11
{
public void test(Shape s)
{
  s.method();
}

public static void main(String[] args)
{
Test11 t=new Test11();
Rectangle rect=new Rectangle();
Cir cir=new Cir();
t.test(rect);
t.test(cir);

}
}谢谢啦
3,我觉得代码太简单了 ,我想加上 求面积的 方法,可是总是写不对, 哪位大虾给指点一下

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【qrsx_cui】截止到2008-08-01 22:50:49的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:0.00  %               结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=qrsx_cui
      

  2.   

    多态分为两种:编译时多态和运行时多态。
            编译时类型:主观概念,把它看作什么........
            运行时类型:客观概念,实际它是什么..........
      例如::Animal a=new Dog();
     指着狗问,这个动物是什么动物?不知道你能不能懂...学ing ...
      

  3.   

    例如::Animal a=new Dog(); 
    指着狗问,这个动物是什么动物? ==========================
    这个例子我记下了,一会睡觉时候好好琢么琢么
    谢谢楼上了 
      

  4.   

    楼主的代码已经基本OK了,基本能表现出多态的意思^_^Shape是基类,是比较抽象的事物(图形)。
    而具体点的事物如Rectangle(方形)和Cir(圆形)对于测试方法test()来说,虽然都是Shape,但表现出不同的形态和行为,这就叫所谓的多态。想加求面积方法?要求面积,你得先给具体形态加上相应的具体属性啊!
    如给Rectangle加上长和宽,给Cir加上半径,然后给它们各自加上相同目的相同方法名但是不同的实现方式。^_^
      

  5.   

    2#就这么说 
    你可以跟老师定义一个类: 人  然后定义一个子类:色狼 
    然后问色狼:你是不是人?!
    ================================================
    是不是就是 Person a=new Selang()   ?楼主的代码已经基本OK了,基本能表现出多态的意思^_^ Shape是基类,是比较抽象的事物(图形)。 
    而具体点的事物如Rectangle(方形)和Cir(圆形)对于测试方法test()来说,虽然都是Shape,但表现出不同的形态和行为,这就叫所谓的多态。 想加求面积方法?要求面积,你得先给具体形态加上相应的具体属性啊! 
    如给Rectangle加上长和宽,给Cir加上半径,然后给它们各自加上相同目的相同方法名但是不同的实现方式。^_^
    ====================================
    谢谢...总算明天 可以勉强和老师交差了, 主要是我的基础差,在学校里没好好学, 别的同学  很简单就能弄明白,我要好久才明白....所以麻烦大家了
      

  6.   

    多态我是这么理解的!首先你应该知道如果想实现多态应该满足三个条件 :
    1.他们之间要有继承 比如:你自己写的代码里:Shape 类与其导出的子类—>Rectangle ,Cir 
    2.子类要重写父类方法: 你代码中的method()方法
    3.要有父类的引用指向子类对象:这个在你写的代码中体现在Test11 类中public void test(Shape s)方法的参数
    你在调用时传的是一个Shape子类的引用这句话就像二楼说的 Animal a=new Dog(); <向上转型>像二楼说的那样分为两种:
    一个是编译时的还有一个是运行时的!
    编译时就是 Animal a=new Dog();这句的体现 也相当于上面所说的——要有父类的引用指向子类对象
    运行是:t.test(rect); t.test(cir);  应该体现在这两句上!因为它会自动调用各自类中重写父类的方法
    不知道这样说你理不理解!我也是刚学,反正我是这么理解的
      

  7.   

    多态我是这么理解的! 首先你应该知道如果想实现多态应该满足三个条件 : 
    1.他们之间要有继承 比如:你自己写的代码里:Shape 类与其导出的子类—>Rectangle ,Cir 
    2.子类要重写父类方法: 你代码中的method()方法 
    3.要有父类的引用指向子类对象:这个在你写的代码中体现在Test11 类中public void test(Shape s)方法的参数 
    你在调用时传的是一个Shape子类的引用这句话就像二楼说的 Animal a=new Dog(); <向上转型> 像二楼说的那样分为两种: 
    一个是编译时的还有一个是运行时的! 
    编译时就是 Animal a=new Dog();这句的体现 也相当于上面所说的——要有父类的引用指向子类对象 
    运行是:t.test(rect); t.test(cir);  应该体现在这两句上!因为它会自动调用各自类中重写父类的方法 
    不知道这样说你理不理解!我也是刚学,反正我是这么理解的 
    ======================================================
    谢谢 songshuxing  帮忙解答,很详细. 我在这个概念上 比以前清晰多了, 等明天 在 做几个例子 体会体会