父类对子类的引用(父类引用指向子类对象)
程序员文章站
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()方法的一个重写,所以父类类型的引用不能调用这个方法
}
}
推荐阅读
-
父类对子类的引用(父类引用指向子类对象)
-
Java多态的理解--父类引用指向子类的对象
-
python 高级篇-面向对象-6 子类访问父类的私有属性
-
java中子类与父类中的静态代码块、非静态代码块和构造函数的加载顺序 博客分类: JAVA基础 静态代码块非静态代码块加载顺序
-
java中子类与父类中的静态代码块、非静态代码块和构造函数的加载顺序 博客分类: JAVA基础 静态代码块非静态代码块加载顺序
-
为什么在创建子类对象的时候会调用父类的构造函数
-
python中子类调用父类函数的方法示例
-
python中子类调用父类函数的方法示例
-
Java中父类怎么调用子类的方法
-
Java中关于子类覆盖父类的抛出异常问题