zoukankan      html  css  js  c++  java
  • 面向对象——继承

    1、继承的概念
     继承是类与类的一种关系,是一种“is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。
    2、继承的好处
     子类拥有父类的所有属性和方法(除了private修饰的属性不能拥有)从而实现了实现代码的复用; 
    3、语法规则,只要在子类加上extends关键字继承相应的父类就可以了
    方法的重写:
    子类如果对继承的父类的方法不满意(不适合),可以自己编写继承的方法,这种方式就称为方法的重写。当调用方法时会优先调用子类的方法。
     重写要注意:
      a、返回值类型
      b、方法名
      c、参数类型及个数
     都要与父类继承的方法相同,才叫方法的重写。
    重载和重写的区别:
      方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段。
      方法重写:相对继承而言,子类中对父类已经存在的方法进行区别化的修改。
    继承的初始化顺序
      1、初始化父类再初始化子类
      2、先执行初始化对象中属性,再执行构造方法中的初始化。
     基于上面两点,我们就知道实例化一个子类,java程序的执行顺序是:
     父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化--->子类对象构造方法

    final关键字:
    使用final关键字做标识有“最终的”含义。
      1. final 修饰类,则该类不允许被继承。
      2. final 修饰方法,则该方法不允许被覆盖(重写)。
      3. final 修饰属性,则该类的该属性不会进行隐式的初始化,所以 该final 属性的初始化属性必须有值,或在构造方法中赋值(但只能选其一,且必须选其一,因为没有默认值!),且初始化之后就不能改了,只能赋值一次。
      4. final 修饰变量,则该变量的值只能赋一次值,在声明变量的时候才能赋值,即变为常量。

    super关键字
    在对象的内部使用,可以代表父类对象。
    super的应用:
     首先我们知道子类的构造的过程当中必须调用父类的构造方法。其实这个过程已经隐式地使用了我们的super关键字。
     这是因为如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。
     那么如果自己用super关键字在子类里调用父类的构造方法,则必须在子类的构造方法中的第一行。
     要注意的是:如果子类构造方法中既没有显示调用父类的构造方法,而父类没有无参的构造方法,则编译出错。
    (补充说明,虽然没有显示声明父类的无参的构造方法,系统会自动默认生成一个无参构造方法,但是,如果你声明了一个有参的构造方法,而没有声明无参的构造方法,这时系统不会动默认生成一个无参构造方法,此时称为父类有没有无参的构造方法。)

    object类:
    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类。
     Object类中的方法,适合所有子类!!!
     那么Object类中有什么主要的方法呢?
     1、toString()
      a. 在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。
      我们可以发现,如果我们直接用System.out.print(对象)输出一个对象,则运行结果输出的是对象的对象地址字符串,也称为哈希code码。如:
      哈希码是通过哈希算法生成的一个字符串,它是用来唯一区分我们对象的地址码,就像我们的身份证一样。  
      b. 可以通过重写toString()方法表示出对象的属性。
      如果我们希望输出一个对象的时候,不是它的哈希码,而是它的各个属性值,那我们可以通过重写toString()方法表示出对象的属性。
     2、equals()
      a、equals()----返回值是布尔类型。
      b、默认的情况下,比较的是对象的引用是否指向同一块内存地址-------对象实例化时,即给对象分配内存空间,该内存空间的地址就是内存地址。使用方法如:dog.equals(dog2);
      c、 如果是两个对象,但想判断两个对象的属性是否相同,则重写equals()方法。

  • 相关阅读:
    【Pascal's Triangle II 】cpp
    【Pascal's Triangle】cpp
    【Substring with Concatenation of All Words】cpp
    【Multiply Strings】cpp
    【Minimum Window】cpp
    【Merge Intervals】cpp
    【Insert Interval】cpp
    认识GIT之入门
    数据结构学习系列之线性表(四)
    VBox虚拟机与主机(宿主)通讯原理以及socat(套接字猫)简单介绍
  • 原文地址:https://www.cnblogs.com/clearlove007/p/13977658.html
Copyright © 2011-2022 走看看