• 2020.10.16


    、今日学习内容:

    今天主要学习的还是继承和多态那部分的知识点:

    一、继承:

    1、顶层基类Object

    在Java中,所有的类都派生自Object。

    在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。为了返回有意义的信息,子类可以重写toString()方法。

    2、方法覆盖要点:

    方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!

    在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

    Java方法覆盖的基本规则:

    (1)覆盖方法的允许访问范围不能小于原方法。

    (2)覆盖方法所抛出的异常不能比原方法更多。

    (3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

    (4)不能覆盖静态方法。

    二、多态:

    1、多态定义:

    “多态性”一词最早用于生物学,指同一种族的生物体虽然具有相同的本质特性,但在不同的具体环境下又有可能呈现出不同的特性。

    就是说, 相同的一条语句,在不同的运行环境中可以产生不同的运行结果

    2、多态概念的关键点:

    多态的最本质特征就是父类(或接口)变量可以引用子类(或实现了接口的类)对象。

    换句话说:子类对象可以被当成基类对象使用!

    其典型代码如下所示:

          Parent p=new Child();

          IMyClass obj=new MyClass();

    总是可以让更一般的对象容纳更具体化的对象.

    特别地,Java类库的最顶层类是Object。

    因此每个对象都可以赋值给Object变量。

    3、Java中子类与基类变量间的赋值

    子类对象可以直接赋给基类变量。

    基类对象要赋给子类对象变量,必须执行类型转换, 其语法是:

             子类对象变量=(子类名)基类对象名;

    也不能乱转换。如果类型转换失败Java会抛出以下这种异常:

             ClassCastException

    4、怎样判断对象是否可以转换:

          可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:

        Object obj="Hello";

        if(obj instanceof String)

        System.out.println("obj对象可以被转换为字符串");

    5、子类、父类拥有同名的方法时:

    当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

    如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。

    如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的!

    牢记:在实际开发中,要避免在子类中定义与父类同名 的字段。不要自找麻烦!——但考试除外,考试 中出这种题还是可以的。

    6、当多个类实现同一接口(或派生自同一抽象类)时,针对这些类所创建的对象调用接口所定义的方法时,会分别调用相应的类的具体实现代码

    7、多态编程有两种主要形式:

    (1)继承多态:示例程序使用的方法。

    (2)接口多态:使用接口代替抽象基类。

    8、使用多态最大的好处是:

    当你要修改程序并扩充系统时,你需要修改的地方较少,对其它部分代码的影响较小!千万不要小看这两个“较”字!程序规模越大,其优势就越突出。

    二、遇到的问题:

        没有遇到什么问题。

    三、明日学习计划:

        明天研究四则运算代码。

  • 相关阅读:
    Modelsim中观测代码覆盖率
    Allegro中Thermal relief Pad 和Anti Pad
    时序逻辑中阻塞赋值引起的仿真问题
    如何提高FPGA工作频率(转载)
    `include在Verilog中的应用
    forever
    wxpython 应用 使用 google gauth 认证
    sql to sqlalchemy 转换
    django 简易博客开发 5 markdown支持、代码高亮、gravatar头像服务
    simpletodo: 一个简易的 todo 程序 django版
  • 原文地址:https://www.cnblogs.com/marr/p/14174807.html
Copyright © 2020-2023  润新知