zoukankan      html  css  js  c++  java
  • 课后动手动脑

    1、动手动脑:继承条件下的构造方法调用

     

    首先执行超类的构造方法,然后显示子类的构造方法。

    当修改代码后,执行结果变为:

     

    依旧会先执行超类的构造方法,然后执行字类的相对应的构造方法。

    思索:

    由于子类是继承父类中的属性的,而父类中的属性需要调用父类的构造方法进行初始化,所以每次新定义一个子类的对象时,都需要调用一次父类的构造函数。所以不能将这个过程反过来,因为继承是顺序继承,不可逆。

    2、探索技术的奥秘

     

    首先,haha.a是对象类的名字,haha是包的名字,a是类的名字,@...这些是开辟的新地址,因为每次初始化对象,都需要给新的对象开辟新的空间,所以这就需要不同的地址来存储数据了。

    3、动手动脑:方法覆盖

    代码:

    //1605-2 20163576 蔡逸飞;

    package haha;

    class haha

    {

    void en()

    {

    System.out.println("haha");

    }

    }

    class ha extends haha

    {

    void en()

    {

    super.en();

    System.out.println("ha");

    }

    }

    public class tiaoshi

    {

    public static void main(String args[])

    {

    ha h1=new ha();

    h1.en();

    }

    }

    结果:

     

    在没有super的情况下,只会输出ha,也就是子类的类名,而父类中的方法,由于方法覆盖不能够显示出结果,但是当加上super语句后,就可以执行父类中的重名方法了。

    4、“类型转换”知识点考核-2

    第二、四和五都会出现问题。

    由于dog中的属性比mammal中的属性多,所以mammal转换为dog类型时,就会出现问题。

    dogcat的属性不一样,所以不能相互赋值。

    m并没有得到cat的赋值,多以并不能直接将m转换为cat类型。

    5、在实践中理解把握复杂的知识-2

    结果:

     

    初始化parentchild并调用方法,执行结果为前两行,

    当将child赋值给parent后,调用parent的方法,输出的是child的值,应当是parent中的重名方法和属性被child的覆盖,然后输出地值就是child的值了,然后将parent的属性值加1,但由于此时parent的方法输出地是child的属性,所以为200,最后将parent强制转换为child类型使他的值加1,最后调用方法,输出201

  • 相关阅读:
    Oracle11g客户端安装记要202011+Navicat Premium 连接Oracle 数据库
    设计模式之 ==> 观察者计模式
    设计模式之 ==> 责任链计模式
    一个.NET Core下的开源插件框架
    JavaScript判断文件是否为UTF-8编码
    Postgresql 设置字段搜索支持中文排序
    springboot docker 显示中文乱码问题
    linux 更新系统时间
    怎么让网易云音乐等音乐软件的歌词在MacBook Pro的 touch bar(触摸栏)上显示
    数仓:解读 NameNode 的 edits 和 fsimage 文件内容
  • 原文地址:https://www.cnblogs.com/CHAHA123/p/7821372.html
Copyright © 2011-2022 走看看