zoukankan      html  css  js  c++  java
  • JAVA面向对象(OOP)

    一、什么是面向对象:  

        1、本质:以类的方式组织代码,以对象的组织(封装)数据。

        2、三大特征:封装,继承,多态。

        3、从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象,是对对象的抽象。

          从代码运行角度考虑是先有类后有对象。类是对象的模块。

    二、创建并初始化对象

        1、使用new关键字创建对象

            使用new关键字创建的时候,出了分配内存空间之外,还给创建好的对象进行默认的初始化,以及对类中的构造器的调用。

            

         2、类中构造器的调用

            1、类中的构造器也称为构造方法,是在创建对象的时候必须要调用的,并且构造器有两个特点:1、必须和类名相同,必须没有返回类型,也不能写void

           

            2、注意:

              a、构造器名要和类名相同,没有返回值。

              b、,使用new,本质就是在调用构造方法。

              c、定义有参构造之后;如果想使用无参构造,就要显示定义一个无参的构造。  

    三、封装

       1、该露的露,该藏得藏:

              程序设计追求“高内聚,低耦合”。高内聚就是内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

       2、封装:就是对数据的隐藏(private)

         3、想访问私用的属性(private :私有),就用get/set的方法。

              4、封装意义:

           a、提高程序的安全性,保护数据

          b、隐藏代码的实现细节

          c、统一接口

          d、增加了系统的可维护性

          

     四、继承

      1、继承的本质:是对某一些类的抽象,从而实现对现实世界更好的建模。

      2、使用关键字extends(子类是父类的扩展)

          a、继承是类与类之间的一种关系。

          b、继承关系有两个类:一个类为子类(派生类),另一个类为父类(基类),子类继承父类,使用关extends来表示

          c、子类和父类之间,从意义上讲应该具有“is a”的关系。

      3、java类中只有单继承,没有多继承。==》一个父类有很多子类,但一个子类只有一个父类

           4、即使类中什么都没有写,什么都没有继承,都可以调用一些方法?====》因为在java中,所有的类都会默认直接或者间接继承Object类(Object类 ===》超类)

      5、修饰符的权限:public(公共的)>protected(保护的)>default(默认的)>private(私有的)

          注意:一个java类中可以有多个class文件 ,但只能有一个public class

        

       5、super:

          1、注意点:a、super调用父类的构造方法,必须在构造方法的第一个。

                 b、super必须只能出现在子类的方法或者构造方法中。

                c、super和this 不能同时调用构造方法

          拓展:super和this区别:

          相同点:在构造方法里面,必须放在方法的第一行,但是this和super不能同时出现和使用。

          不同点:1、代表的对象不同:this :本身调用者的对象;super :代表父类的对象

              2、使用前提不同:this :没有继承也可以使用;super : 只有继承条件才可以使用

              3、构造方法调用对象不同:this :本类的构造 ;super : 父类的构造

      6、重写:

         1、需要有继承关系,子类重写父类的方法

         2、方法名必须相同

         3、修饰符:修饰符的权限可以增大,但不能减小  ;修饰符的权限:public(公共的)>protected(保护的)>default(默认的)>private(私有的)

         4、抛出的异常:范围可以被缩小,但不能扩大

         5、总之,重写:子类的方法要和父类的方法要一致,只是方法体不相同。

             

          为什么要重写父类的方法?

                 1、父类的功能,子类不一定完全需要或者不一定完全满足!

                重写的快捷键:alt+insert   选择override

    拓展:重写(override)和重载(overload)的区别

        重写:1、override表示重写,在继承关系中,子类重写父类的方法

           2、好处:不影响父类的原来的功能,只是改变子类的功能

           3、“两同两小一大”规则:a、方法名相同,参数类型相同,b、子类返回类型小于等于父类方法的返回类型

                      c、子类抛出的异常小于等于父类方法抛出的异常,d、子类访问权限大于等于父类方法访问权限

         重载:1、overload表示重载,在一个类里。

            2、方法名相同,参数列表不同

            3、好处:体现程序的灵活性

    哪些关键词修饰的方法是不能被重写的?

          1、带有static的方法不能被重写,因为它属于类,不属于实例。

          2、带有final的方法是不能被重写的,因为它表示常量,不可被改变的。

          3、带有private修饰符的方法是不能被重写的。

    五、多态:

        1、即同一方法可以根据发送对象的不同而采用多种不同的行为方式

        2、多态存在的条件:1、有继承关系,2、子类重写父类方法,3、父类引用指向子类对象(口诀:编译看左边 --》看父类提供的方法  ;运行看右边 --》结果以右边为准)。

           注意:1、多态是方法的多态,属性没有多态  2、父类和子类要有联系  ,否则会就出现类型转换异常   

                4、instanceof :(类型转换)  ==》引用类型,判断一个对象是什么类型

            4、总结:

         1、父类引用指向子类对象(口诀:编译看左边 --》看父类提供的方法  ;运行看右边 --》结果以右边为准)

         2、子类转父类  ==》自动转换  ,但子类可能会丢失自己原本的方法。==》称为向上转型

           父类转子类 ==》强制转换 ,但父类可能会丢失被子类重写的一些方法 ==》称为向下转型

         3、方便调用,减少程序的重用性,提高程序的灵活性,通用性和统一性。

    五、Static关键字:

         1、好处:a、随着类的加载而加载  2、全局唯一 , 全局共享  3、可以之间通过类名调用   4、静态只能调用静态,非静态可以调用随便调(也包括静态)

            

         2、静态代码块:

            1、语法:static{ //方法体   }     (代码就是用一段花括号包起来的代码块)

            2、在成员位置的代码块,被static修饰,只加载一次,一般用于项目初始化

            

       拓展:

        

       代码块 拓展:1、在成员位置的代码 ==》构造代码块   :用于提取代码的共性     ---new时就触发

            2、在局部位置的代码块==》局部代码块 :用于控制变量的作用范围  --调用方法时就触发

            3、在成员位置的代码,用static修饰的代码块  ==》静态代码块  :用来程序初始化  --类加载时就触发

            4、执行顺序:静态代码块>构造代码块>构造方法>局部代码块

    六、抽象类:

       1、用abstract修饰来表示

       2、abstract修饰符可以用来修饰方法也可以修饰类。如果修饰方法,则这方法就称为抽象方法;如果修饰类,则该类就称为抽象类。

       3、抽象类中可以抽象方法,也可以有普通方法。

       4、抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。

       5、抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。

       6、子类继承抽象类,那么就必须要重写抽象类中的抽象方法。没有重写抽象方法,则该子类该声明为抽象类。

        

       7、总结:

          1、不能new 这个抽象类,只能靠子类去实现,(调用时使用多态的方法)

          2、抽象类中可以写普通方法

          3、抽象方法必必须在抽象类中

          4、子类怎么决定到底要重写那个方法?

                对于普通方法:想改父类的方法,就重写,

                对于抽象方法,子类要么是一个抽象类,要么就要重写父类的所有的抽象方法。

    七、接口:

        1、用interface关键词来表示。声明类的关键词使用class,声明接口的关键词使用interface。

        2、java中的类只有单继承,但是接口可以支持多继承,多实现。

        3、接口是一个特殊的抽象类,因为它的接口里面全部都是抽象方法。

        4、接口里面的方法,只能靠类来实现。接口和类之间发生实现关系implements

        5、接口和抽象一样,都不能new,只能靠子类实现(调用时使用多态的方法)

          

      拓展:

        1、普通类:只有具体实现。

        2、抽象类:具体实现和规范(抽象方法)都有!

        3、接口:只有规范!就是定义了一些规则。自己无法写方法,==》专业的约束  、约束和实现的分离:面向接口的编程

      

    正在学习中,有错误的地方,请多多指教!
  • 相关阅读:
    固态硬盘安装后优化
    如何在面试中为人才留下好印象
    数据化管理学习笔记
    项目经理入门记(一)
    Ubuntu10下MySQL搭建Amoeba系列(文章索引)
    SQL Server 性能优化实战系列(文章索引)
    Ubuntu12下挂载硬盘(9TB)(文章索引)
    SQL Server 设计开发系列(文章索引)
    简单实用SQL脚本
    SQL Server 维护管理系列(文章索引)
  • 原文地址:https://www.cnblogs.com/16904985zy-aoyu/p/14379438.html
Copyright © 2011-2022 走看看