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;
}
}