父类引用指向子类对象的问题,即父类 对象名=new 子类

对于父类引用指向子类,先看下面一段代码

package chapter6_8;

public class Father {
    private int m=10;
    public Father(){
        System.out.println("这是父类");
    }
    public void  talk(){
        System.out.println("我是你爹");
    }
    public void eat(){
        System.out.println("父类吃饭");
    }
}

package chapter6_8;

public class Child extends Father {
    public Child(){
        System.out.println("这是子类");
    }
    public void talk(){
        System.out.println("这是儿子");
    }
    public void test1(){
        System.out.println("子类测试方法");
    }
}

package chapter6_8;

public class InstanceOfTest {

    public static void main(String [] args){
        Father father=new Child();//先调用父类构造函数,在调用子类构造函数
        father.talk();//可以使用父类有,子类重写的
        //father.test();//不能使用父类没有的方法
        father.eat();//可以使用父类有,但子类没有重写的

    }
}

运行结果如下:

这是父类
这是子类
这是儿子
父类吃饭

1、父类引用子类对象时,先调用父类构造函数,再调用子类构造函数;
2、当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。如果子类重写了该方法,就调用子类的,没有就用父类的(即就近原则)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值