码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象-特征之继承

时间:2018-07-22 22:22:34      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:成员   区分   loading   因此   引用   生成   内存地址   面向   方法   

继承:

    1.概念:将相同的成员变量和方法写到父类,子类继承父类,还可以加上子类独有的属性,减少冗余代码。
      举例:儿子继承父亲的一些特征和手艺,儿子还可以有自己的特征。
    2.使用:子类名+extends+父类名
              用super()方法名来调用父类中的方法。
      注意:一个子类只能继承一个父类,一个父类可以被多个子类继承。

    3.继承关系初始化顺序
      父类属性--》父类的构造方法--》子类属性--》子类的构造方法
      先父后子 先属后构

方法的重载和重写?overloading和override区别
   一、重载 overloading
     1.规则:同一个类中
              方法名称相同
              参数列表必须不相同(类型 个数 顺序)
              返回值类型和访问修饰符无关
              构造方法重载
         例:public Student(){}
              public Student(String name){}
              public Student(String sex){}//错误,有相同类型的参数
              public Student(String name,int age){}

       2.发生在同类中。
   二、重写 override
     1.规则:在继承关系中体现
               方法名字相同
               参数列表必须相同
               返回值的类型相同或者是其子类
               访问修饰符不能严于父类(父类是protected 子类是protected public )
               方法重写:相对于继承而言,子类中对父类已经存在的方法进行区别修改。

     2.发生在子类和父类两个类中。

关键字:

      abstract 抽象类

      1.修饰class后变为抽象类,限制实例化
      2.类中定义方法没有意义,因此我们可以在类中定义方法为抽象方法,抽象方法没有方法体。
      3.抽象方法的实现步骤
        1)在父类的方法前添加abstract,去除方法体
        2)在子类中重写此抽象方法
      4.为什么使用抽象方法?
        1)父类只是知道子类应该有哪些方法,但是无法准确完成方法具体实现
        2)避免子类设计的随意性
      5.注意:
        1)父类中编写抽象方法,子类必须重写
        2)抽象类中可以有普通方法,也可以有抽象方法
        3)抽象方法必须在抽象类中

        4)final和abstract是两个相反的单词,绝对不能同时修饰

      Object 上帝类 祖宗类

       1.概念:Object类是所有类的父类。如果一个类没有使用extends关键字标识继承另一个类,那么这个类默认继承Object
                 因此自定义的类和底层开发人员的类

           例:String str="";
                str.equals("");//equals标明并不是在Object类,是String类。因为String子类重写了Object父类里的方法

        2.Object类中的主要方法
           1)equals :比较对象的引用是否指向同一块内存地址。(引用:指向一块内存地址)

           2)toString()
               StringBuffer--》toString()--->StringBuffer转换为String类型
               返回的是哈希码值(对象地址字符串)。(Hash)

               我们直接使用System.out.println(dog);输出一个对象
               结果就是对象的地址字符串也叫哈希码值(com.sisp.oop4.object.Dog@659e0bfd)

               哈希码值:通过哈希算法(Hash)生成的一个字符串,用来区分我们的对象地址码。

           3)getClass() 可以得到此对象的类型
               System.out.println(dog.getClass());
               class com.sisp.oop4.object.Dog

面向对象-特征之继承

标签:成员   区分   loading   因此   引用   生成   内存地址   面向   方法   

原文地址:https://www.cnblogs.com/zhang-xy/p/9351543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!