10月21日动手动脑

Posted 1234yyf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10月21日动手动脑相关的知识,希望对你有一定的参考价值。

自行编写代码测试以下特性,在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

package src.afterclass;

public class dongshoudongnao 
{
    public static void main(String args[])
    {
        EF ef=new EF("张三");
        ef.fly();
    }

}
class ABC
{
    private String name;

    public  ABC(String name)
    {
        this.name = name;
    }
    public void fly()
    {
        System.out.println("父类");
    }
}
class EF extends ABC
{
    public EF(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    public void fly()
    {
        //super.fly();
        System.out.println("子类");
    }
}

技术图片

 

 

package src.afterclass;

public class dongshoudongnao 
{
    public static void main(String args[])
    {
        EF ef=new EF("张三");
        ef.fly();
    }

}
class ABC
{
    private String name;

    public  ABC(String name)
    {
        this.name = name;
    }
    public void fly()
    {
        System.out.println("父类");
    }
}
class EF extends ABC
{
    public EF(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    public void fly()
    {
        super.fly();
        System.out.println("子类");
    }
}

技术图片

 

 

技术图片

 

技术图片

 

第一个是调用的父类的函数,

第二个调用子类的函数;

第三个是将子类赋给父类,相当于调用的是子类;

第五个是将父类强制转化成子类;

 

 

下面哪一个会导致程序运行时错误?

m=d; d=m; d=(Dog)m; d=c; c=(Cat)m;

先进行自我判断,得出结论后,运行相关代码,看看你的判断是否正确。

          自我判断:"d=m","d=c"引起编译错误

                “c=(Cat)m”引起运行时错误

           原因:“d=m”编译错误是因为Mammal类是Dog类的父类,子类中的成员比父类的多,父类无法将子类初始化;

                     “d=c”编译错误是因为两者代表不同的类,不能给对方赋值;

                     “c=(Cat)m”会引起运行时错误是因为Dog类的对象d已将Mammal类的对象m初始化,m被转换为Dog类后不能再转换为Cat类。

 

以上是关于10月21日动手动脑的主要内容,如果未能解决你的问题,请参考以下文章

java的动手动脑10月20日

2016 10月15日java的动手动脑

Java11月9日的动手动脑

2018/10/21动手动脑

2018/10/21动手动脑及类的创建

10-21动手动脑