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,我觉得代码太简单了 ,我想加上 求面积的 方法,可是总是写不对, 哪位大虾给指点一下
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,我觉得代码太简单了 ,我想加上 求面积的 方法,可是总是写不对, 哪位大虾给指点一下
楼主【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
编译时类型:主观概念,把它看作什么........
运行时类型:客观概念,实际它是什么..........
例如::Animal a=new Dog();
指着狗问,这个动物是什么动物?不知道你能不能懂...学ing ...
指着狗问,这个动物是什么动物? ==========================
这个例子我记下了,一会睡觉时候好好琢么琢么
谢谢楼上了
而具体点的事物如Rectangle(方形)和Cir(圆形)对于测试方法test()来说,虽然都是Shape,但表现出不同的形态和行为,这就叫所谓的多态。想加求面积方法?要求面积,你得先给具体形态加上相应的具体属性啊!
如给Rectangle加上长和宽,给Cir加上半径,然后给它们各自加上相同目的相同方法名但是不同的实现方式。^_^
你可以跟老师定义一个类: 人 然后定义一个子类:色狼
然后问色狼:你是不是人?!
================================================
是不是就是 Person a=new Selang() ?楼主的代码已经基本OK了,基本能表现出多态的意思^_^ Shape是基类,是比较抽象的事物(图形)。
而具体点的事物如Rectangle(方形)和Cir(圆形)对于测试方法test()来说,虽然都是Shape,但表现出不同的形态和行为,这就叫所谓的多态。 想加求面积方法?要求面积,你得先给具体形态加上相应的具体属性啊!
如给Rectangle加上长和宽,给Cir加上半径,然后给它们各自加上相同目的相同方法名但是不同的实现方式。^_^
====================================
谢谢...总算明天 可以勉强和老师交差了, 主要是我的基础差,在学校里没好好学, 别的同学 很简单就能弄明白,我要好久才明白....所以麻烦大家了
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); 应该体现在这两句上!因为它会自动调用各自类中重写父类的方法
不知道这样说你理不理解!我也是刚学,反正我是这么理解的
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 帮忙解答,很详细. 我在这个概念上 比以前清晰多了, 等明天 在 做几个例子 体会体会