(有什么错误希望大家可以指出来,谢谢。)
使用前提:在父类与子类之间的关系中,调用的方法要在父类中定义。
例如:Animal a=new Dog();
Animal类是Dog类的父类,声明的是一个Animal类,实际上它指向的是子类的一个对象 也就是new 关键字后的。
关键字: 多态,动态链接,向上转型
1、多态
方法的重写与重载和动态链接构成多态性,在父类对子类的引用中主要体现在子类对父类方法的重写
2、动态链接
当父类中定义的某个方法在子类中没有被重写时,调用的是父类的方法,如果子类对父类的方法进行了重新,那么调用的是子类的方法。
3、向上转型
在例子中,实际上是实例化了一个子类Dog类型的对象,Animal类型的父类a只是对他的引用
所以Animal类型的引用是可以指向Dog类型的对象的。这就是“向上转型”
public class Animal {
public void animal1(){}
public void animal2(){}
}
public class Dog extends Animal {
public void animal1(){
System.out.println("继承父类 并对他的方法进行重写");
}
public void animal1(String dog){
System.out.println("此处是对animal1()方法的重载。");
}
public static void main(String[] args) {
Animal a=new Dog();
a.animal2();//此处的animal3()方法调用的是父类的方法
a.animal1();//此处是因为在父类中定义了animal1()方法,所以父类类型的引用可以调用这个方法
a.animal1("sss");//此处出现错误是因为父类中没有定义animal1(String dog)该方法,
// 该方法只是对animal1()方法的一个重写,所以父类类型的引用不能调用这个方法
}
}