Java 多态

个人以为产生多态的情况一般要有的条件有

1.0 要有继承

2.0 子类需重写父类的方法。

在多态的练习一TKJ p150

   //父类
  public class Cycle {
        public void ride(Cycle c) {
            System.out.println("this is "+c.getName()+"'s ride");

        }

    public String getName() {
        return name;
    }

    private String name="cycle";
}

//子类Bicycle
public class Bicycle extends Cycle {
//重写ride方法
    public void ride(Bicycle c) {
        System.out.println("this is "+c.getName()+"'s bicycle");
    }
    public String getName() {
        return name;
    }
    private  String name="bicycle";

}

//子类Uncycle
public class Unicycle  extends Cycle{

    public void ride(Unicycle c) {
        System.out.println("this is "+c.getName()+"'s ride()");
    }

    public String getName() {
        return name;
    }

    private String name="unicycle";

}


//测试类
public class CycleTest {
    public  static void main(String args[]){
        Cycle bicycle=new Bicycle();
        Cycle unicycle=new Unicycle();
        bicycle.ride(unicycle);
        unicycle.ride(bicycle);
    }
}
多态运行结果:

可以看出多态是后期方法绑定的,也就是在编译时根据传入的参数来绑定方法。

如果存在静态方法在重写的时候还会有多态吗?在上面的三个类中加入静态方法

//cycle的静态方法  
  public static void staticMethon(Cycle c){
            System.out.println("this is Cycle "+ c.getName()+"'s static methon");
        }
//bicycle的静态
   public static void staticMethon(Bicycle b){
        System.out.println("this is Bicycle "+ b.getName()+" ");
    }
//Unicycle的静态方法
  public static void staticMethon(Unicycle u){
        System.out.println("this is Uncycle "+u.getName()+"'s static methon");
    }
通过debugger发现,无论在测试类中传入那个类,他都是走的父类的方法但是传入的参数还是为原类。


这里传入的是Bicycle,但是还是只能走父类的方法、

2017.09.28

我已经看不懂上文自己想表达什么了,但是多态和静态方法肯定不是我说的这种,因为静态方法不会有后期绑定的,他不属于对象,只属于某个类。这应该是个超级明显的错误





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值