又看了下多态对多态好像有了些感觉 所以写个程序 大家看下 这应该算是多态吧? 但是好像 对于多态的特点好像不是能很好的体现,大家说下应该如何完善这个代码段才能更加体现多态????
- 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(); }}