父类引用指向子类对象

请用一段代码具体来解释一下父类引用指向子类对象

public class Parent {
    public void print() {
        System.out.println("This is a method in Parent class.");
    }
}
​
public class Child extends Parent {
    @Override
    public void print() {
        System.out.println("This is a method in Child class.");
    }
}
​
public class Main {
    public static void main(String[] args) {
        Parent parent = new Child();
        parent.print();
    }
}

上述代码中,定义了一个父类 Parent 和一个子类 Child。父类 Parent 中有一个 print 方法,子类 Child 继承了父类的 print 方法并进行了重写。

在主函数 main 中,创建了一个父类引用 parent,并通过 new Child() 创建一个子类对象并赋值给 parent。此时,父类引用 parent 指向了子类对象。然后调用 parentprint 方法,根据多态性质,实际上调用的是子类 Child 中重写的 print 方法。因此,程序会输出 "This is a method in Child class."

上面 这段代码为什么一定要用父类引用指向子类对象

使用父类引用指向子类对象的主要目的是实现多态。多态是面向对象编程中的重要概念,它允许不同类型的对象对同一消息做出不同的响应。

通过使用父类引用指向子类对象,可以实现以下几点好处:

  1. 提高代码的灵活性:使用父类引用可以方便地切换不同的子类对象,从而实现不同的行为。这样可以在不修改现有代码的情况下,扩展程序的功能。

  2. 简化代码的编写:使用父类引用可以让代码更加简洁,不需要为每个子类都编写相同的代码逻辑。只需要使用父类引用来调用相同的方法,具体的实现由子类来完成。

  3. 提高代码的可读性:使用父类引用可以让代码更加易于理解和维护。通过使用父类引用,可以将关注点集中在父类定义的接口上,而不需要关心具体的子类类型。

总之,通过使用父类引用指向子类对象,可以实现代码的灵活性、简洁性和可读性,从而提高程序的质量和可维护性。

面试题

class Outer5{
private int num=5;
class Inner5{
private int num=10;
public void fun(){
int num = 15;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer5.this.num);
}
}
}
public class InterviewQuestions {
public static void main(String[] args) {
Outer5.Inner5 inner5=new Outer5().new Inner5();
inner5.fun();
}
}

这段代码定义了一个包含内部类的外部类。外部类名为Outer5,内部类名为Inner5

在外部类Outer5中,有一个私有属性num,值为5。

在内部类Inner5中,也有一个私有属性num,值为10。

内部类中的方法fun()中,还定义了一个局部变量num,值为15

在fun()方法中,分别输出了三个num的值:

  1. 第一个输出语句System.out.println(num);输出的是局部变量num的值,即15。

  2. 第二个输出语句System.out.println(this.num);输出的是内部类Inner5的成员变量num的值,即10。

  3. 第三个输出语句System.out.println(Outer5.this.num);输出的是外部类Outer5的成员变量num的值,即5。

main方法中,创建了Outer5.Inner5的实例inner5,并调用其fun()方法,所以会依次输出15、10和5。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值