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

大家帮忙看看我写的这个算多态么
又看了下多态对多态好像有了些感觉 所以写个程序 大家看下 这应该算是多态吧? 但是好像 对于多态的特点好像不是能很好的体现,大家说下应该如何完善这个代码段才能更加体现多态????
Java code
class Shape{
    void style(){
        
    }
}

class Circle extends Shape{
    void style(){
        System.out.println("Circle's Style");
    }
}

class Square extends Shape{
    void style(){
        System.out.println("Square's Style");
    }
}



class Person{
    private String name;
     Person(String name,Shape i){
         i.style();
     }
}
public class TestShape {

public static void main(String[] args) {
    Circle c = new Circle();
    Square s = new Square();
    Person p1 = new Person("name1",c);
    Person p2 = new Person("name2",s);
    
    
    
    
    }


}


------解决方案--------------------
理论上应该算 不过楼主
private String name;
Person(String name,Shape i){
i.style();
}
是不是漏了给name初始化
------解决方案--------------------
小菜回答: 楼主我觉得是这样的。我也刚刚在学多态只说点简单的。举个例子。
 假如动物都有运动这个方法 。但是 动物的子类中 人 ,鸟 鱼他们的运动是不一样的。所以我们就想把这个运动的方法抽象出来 抽象成一个接口 叫运动。 而让人 鸟 鱼 这几个类分别去实现这个接口 定义自己不同的运动方法。 然后定义一个 接口的引用指向 新生成的 动物对象 以后当你用接口的引用去调用 这个运动方法时 如果这个接口指向的是个人 就调用人的运动方法。如果指向的是个鸟 就调用鸟类特有的运动的方法。 这就是所谓的接口的多态。

小菜只懂这些 期待高手补充
------解决方案--------------------
Shape s = new Circle();
...
s = new Square();
...
------解决方案--------------------
Java code
class Shape{
    void style(){
        
    }
}
class Circle extends Shape{
    void style(){
        System.out.println("Circle's Style");
    }
}
class Square extends Shape{
    void style(){
        System.out.println("Square's Style");
    }
}
public class TestShape {

  public static void main(String[] args) {
     Shape sh;
     Circle c = new Circle();
     Square s = new Square();
     sh=c;
     sh.style();
     sh=s;
     sh.style();
  }
}