欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

父类对子类的引用(父类引用指向子类对象)

程序员文章站 2024-03-21 18:53:40
...

(有什么错误希望大家可以指出来,谢谢。)
使用前提:在父类与子类之间的关系中,调用的方法要在父类中定义。

例如: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()方法的一个重写,所以父类类型的引用不能调用这个方法
    }
}