课堂总结2

课堂总结2

多态

即一种方法的两种形态,分别是编译时状态和运行时状态。在这两种状态中若有继承,则会有静态绑定和动态绑定。

  1. 编译时会进行静态绑定,若子类中含有父类中的构造方法(与父类中除参数外完全一致),不会报错,如果有任何差别(包括基本数据类型),就会报错,因此,系统报错不是在运行时,而是在编译时。
  2. 运行时会进行动态绑定,在子类中有某一方法,那么不管父类是否有,依旧执行子类方法。
public class Animal {
    private String food;
    public Animal(){}
    public void eat(String food){this.food=food;}
    public String getFood(){
        return food;
    }
    public void setFood(String food){
        this.food=food;
    }
}
public class Dog extends Animal{
    public void eat(String food){System.out.println("狗吃"+food);}
    public void shouMen(){
        System.out.println("狗在守门");
    }
}
public class Cat extends Animal{
    public void eat(String food){System.out.println("猫吃"+food);}
    public void fishing(){
        System.out.println("猫在钓鱼");
    }
}
public class Test {
    public static void main(String[] args){
        Cat cat=new Cat();
        Dog dog=new Dog();
        dog.eat("bone");
        dog.shouMen();
        cat.eat("fish");
        cat.fishing();
    }
}

解析:

  1. 在编译时,子类DogCat中的构造方法中Animal类的eat方法完全相同,均为public void eat(String food){},其进行了静态绑定。
  2. 运行时,CatDog类中的fishingshouMen构造方法在父类是没有的,其进行了动态绑定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值