多态与覆盖

1.多态
运用多态时,引用类型可以是实际对象类型的父类:
Animal myDog = new Dog;

Animal[] animals = new Animal[3];
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Wolf();
for(int i =0;i<animals.length;i++){
    animals[i].eat();
    animals[i].sleep();
}

参数和返回类型也可以多态

class Vet{
    public void giveShot(Animal a){
        a.makeNoise();
    }
}
class PetOwner{
    public void start(){
        Vet v = new Vet();
        Dog d = new Dog();
        Cat c = new Cat();
        v.giveShot(d);//会执行Dog的makeNoise()
        v.giveShot(c);//会执行Cat的makeNoise()
    }
}

2.覆盖的规则
**参数必须要一样,且返回类型必须要兼容,要覆盖就不能改变参数
**不能降低方法的存取权限,如Public,private

3.方法的重载(overload)
重载的意义是两个方法的名称相同,但参数不同。所以,重载与多态毫无关系。
**返回类型可以不同
**可以更改存取权限
**不能只改变返回类型,如果只有返回类型不同,但参数一样,这是不允许的。

public calss Overloads{
    String uniqueID;
    public int addNums(int a, int b){
        return a+b;
    }
    public double addNums(double a,double b){
        return a + b;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值