多态是一个很实用,方便的一个工具,我们会感谢多态带给我们的方便
问问自己为什么Java用到多态,多态会带来什么好处?
首先它可以通过声明为父型类型的对象引用来引用它的子型对象
其次它会编写出真正具有适应性的程序代码。程序会变得更简洁、更有效率、更简单。使得程序不但容易开发而且也更容易扩展
运用多态时,引用类型可以是实际对象类型的父亲
public class Practice { // 带有public class的文件只能有一个且必须与文件名一致
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 引用类型
Father father = new Son(); // 有点差辈
father.getAge();
}
}
class Father{
int age = 38;
public void getAge(){
System.out.println("Father :" + age);
}
}
class Son extends Father{
// 这个就是在子类中 对 父类的方法进行覆盖
public void getAge(){
System.out.println("Son : " + age);
}
}
参数和返回类型也可以多态!
class Vet{
public void giveShot(Animal a){
a.makeNoise();
}
}
class PetPwner{
public void start(){
Vet v = new Vet();
Dog d = new Dog();
v.giveShot(d);
}
}
方法覆盖的规则:
1.参数必须压一样,且返回类型必须要兼容
2.不能降低方法的存取权限(例如不可以把public修饰的方法改成private修饰的方法)
方法的重载:
1.返回类型可以不同
2.不能只改变返回类型:重载的条件是要使用不同的参数,此时返回类型可以自由地定义
3.可以更改存取权限
public class OverLoads{
String uniqueID;
public int addNums(int a, int b){
return a + b;
}
public double addNums(double a, double b){
return a + b;
}
public void setUniqueID(String theID){
uniqueID = theID;
}
public void setUniqueID(int ssNumber){
String numString = " " + ssNumber;
setUniqueID(numString);
}
}
在后面的一些章节里,都可能会涉及到多态的知识,我们会在后面进行补充