第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

     

 

 

 

 

posted @ 2020-06-19 12:13  --学无止境--  阅读(201)  评论(0编辑  收藏  举报