zoukankan      html  css  js  c++  java
  • 第8章(下)--面向对象编程(中级)

    1.方法重写

    方法重写也叫方法覆盖,需要满足下面的条件

     

    1)      子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样。

    2)      子类方法的返回类型需要和父类方法返回类型一样,或者是父类返回类型的子类比如 父类 返回类型是 Object ,子类方法返回类型是String 。

    3)      子类方法不能缩小父类方法的访问权限.

    方法重写与方法重载比较;

     2.多态

    引出我们要讲解的多态-> 代码的复用性不高,而且不利于代码维护

        多[多种]态[状态](polymorphic)基本介绍

    • 方法或对象具有多种形态(多态)。是面向对象的第三大特征,多态是建立在封装和继承基础之上的。

          多态的具体体现

    1.方法的多态
                  重写和重载

    2.对象的多态
           一个对象的编译类型运行类型不一致


    Animal animal = new Dog();  【Animal animal 就是编译类型,而 new Dog() 就是运行类型】[案例说明:]

     

     

     3.多态的注意事项

    • 多态的前提是:两个对象(类)存在继承关系
    • 多态的向上转型

    本质:父类的引用指向了子类的对象

    1)      语法:父类类型     引用名 = new  子类类型();

    2)      特点:编译看左边,运行看右边。可以调用父类类型中的所有成员,不能调用子类类型中特有成员;

    3)      最终运行效果看子类的具体实现!

    • 多态的向下转型

     1)      语法:子类类型     引用名 =  (子类类型)父类引用;

    2)      只能强转父类的引用,不能强转父类的对象

    3)      要求父类的引用必须指向的是当前目标类型的对象

    4)      可以调用子类类型中所有的成员

     

    • 属性没有重写之说!属性的值看编译类型,即属性没有动态绑定机制.
    • instanceOf 比较操作符,用于判断某个对象的类型是否为XX类型XX类型的子类型 【举例说明】

    • 4.多态的综合案例
    •  5.动态绑定机制

      Java另一重要特性: 动态绑定机制

      1)     当调用对象方法的时候,该方法会和该对象的内存地址绑定

      2)     当调用对象属性时,没有动态绑定机制,哪里声明,那里使

    •  

    • 6.多态数组 

    •   //多态数组 , 可以存放多种数据类型的数组, 但是多种数据类型间存在继承关系

    •  

      7.多态数组应用
    •  8.object类

    • 9.equals
    • ==和equals的对比
    • 1) == :比较运算符,既可以判断基本类型,又可以判断引用类型

      2) == :比较运算符,如果判断基本类型,判断的是值是否相等。示例:int i=10; double d=10.0;    i==d true 【案例说明】

      3)== :比较运算符,如果判断引用类型,判断的是地址是否相等.

      4) equals: 是Object类中的方法,只能判断引用类型

      5) 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。比如Integer,String 

    • 10.子类重写equals
    • 没有重写:false

    • 应用实例-如何重写equals方法:

      判断两个Person对象的内容是否相等如果两个Person对象的各个属性值都一样,结果为true,反之为false。
      代码演示:
    •  子类也可以和父类参加比较

    • 11.hashCode方法

    •  1)      提高具有哈希结构的容器的效率!

      2)      两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!

      3)      两个引用,如果指向的是不同对象,则哈希值是不一样的

      4)      哈希值主要根据地址号来的!, 不能完全将哈希值等价于地址。

      5)      案例演示: obj.hashCode()  [测试:A obj1 = new A(); A obj2 = new A(); A obj3 = obj1]

      6)      后面在集合,中hashCode 会被重写Set...

    •  12.toString方法

    • 13. finalize方法

    •         基本介绍
    • 1) 当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作【演示】

      2) 什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。

      3) 垃圾回收机制的调用,是由系统来决定, 也可以通过System.gc() 主动触发垃圾回收机制.

    •  

       垃圾回收器:

    •  断点调试:

    • 1.1.1       断点调试介绍

       

      断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。然后程序可以进行分析从而找到这个Bug

     

  • 相关阅读:
    Codeforces Round #401 (Div. 2)解题报告
    ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined) 解题报告
    (线段树)hdoj 3308-LCIS
    Codeforces Round #399 (Div. 1 + Div. 2, combined) D题Jon and Orbs(dp)解题报告
    2019 Multi-University Training Contest 1
    2019 Multi-University Training Contest 6
    2019牛客暑期多校训练营(第八场)
    模板
    2019 Multi-University Training Contest 8
    2019 Multi-University Training Contest 9
  • 原文地址:https://www.cnblogs.com/-xuewuzhijing-/p/13162361.html
Copyright © 2011-2022 走看看