关于java中父类=new子类的问题说明

在阅读关于java se的资料中,经常出现父类 a=new 子类()类似的代码,对此表示疑惑,现在在此记录下。
创建父类Animal以及相关子类

package com.test.entity;

public class Animal {
    public void say(){
        System.out.println("animal");

    }
        public  void fatherSay(){
        System.out.println("father");
    }
}


package com.test.entity;

public class Dog extends Animal{
    public void say(){
        System.out.println("dog");
    }
    public void run(){
        System.out.println("dog run");
    }
}

package com.test.entity;

public class Cat extends Animal{
    public void say(){
        System.out.println("cat");
    }
}

问题1:父类a=new 子类可以吗?
答:可以,但是父类a只能使用被子类重写的方法,而无法使用子类自己的方法,a是父类的引用,指向了一个子类对象
在这里插入图片描述
调用a.say,进入子类的方法,输出dog,而调用a.run则会报错
问题2:子类b=new 父类可以吗?
答:不可以
如图所示,报错
在这里插入图片描述
问题3:子类b=new 子类c可以吗?
答:不可以
如图所示,报错在这里插入图片描述
另外,子类可以使用父类的方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值