美文网首页
面向对象基础

面向对象基础

作者: 李哲_1da9 | 来源:发表于2019-07-16 12:56 被阅读0次

    1. 面向过程和面向对象

    面向过程:面向过程适合简单、不需要协作的事务。会需要列出步骤一步一步去执行。

    面向对象:面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。

    这两者并不对立,相辅相成。

    面向对象和面向过程的总结

    1、都是解决问题的思维方式,都是代码组织的方式。 

    2、解决简单问题可以使用面向过程

    3、解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

     2. 对象的进化史

    3.对象和类的概念

    对象:将相关数据和相关方法封装到一个独立的实体,它会包含关于这个实体的一切的数据,属性以及方法。

    类:我们叫做class。 对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。

    总结

      1.对象是具体的事物;类是对对象的抽象;

      2.类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

      3.类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。

    4.第一个类的定义

    类的组成:

    属性field、方法method、构造器constructor

    实际操作:

    5.属性

    成员变量的默认值

    注意:引用类型默认值为null

    6.方法

    方法用于定义该类或该类实例的行为特征和功能实现。

    方法是类和对象行为特征的抽象。

    方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。

    面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

    这里的display和watchdoor是属于方法,而后面的属性和方法一起描述了这个类的特征。

    7.一个典型类的定义和UML图

    实际操作:

                                               UML图  

    8.面向对象的内存分析

    Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。

    栈的特点如下:

      1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)

      2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)

      3. 栈属于线程私有,不能实现线程间的共享!

      4. 栈的存储特性是“先进后出,后进先出”

      5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

    堆的特点如下:

      1. 堆用于存储创建好的对象和数组(数组也是对象)

      2. JVM只有一个堆,被所有线程共享

      3. 堆是一个不连续的内存空间,分配灵活,速度慢!

    方法区(又叫静态区)特点如下:

      1. JVM只有一个方法区,被所有线程共享!

      2. 方法区实际也是堆,只是用于存储类、常量相关的信息!

      3. 用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)

    实际操作:

               

    9.构造方法

         构造器也叫构造方法(constructor),用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。

    声明格式:

    要点:

      1. 通过new关键字调用

      2. 构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。

      3. 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加!

      4. 构造器的方法名必须和类名一致


    10.this关键字

    创建一个对象分为如下四步:

    1. 分配对象空间,并将对象成员变量初始化为0或空

    2. 执行属性值的显示初始化

    3. 执行构造方法

    4. 返回对象的地址给相关的变量

    this的本质就是“创建好的对象的地址”! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象” 。

    this最常的用法:

      1.  在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。

      2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。

      3. this不能用于static方法中。

    实际操作:

    注意:这里的this主要被用来区分局部变量和成员变量。

    创建一个对象分为如下四步

    相关文章

      网友评论

          本文标题:面向对象基础

          本文链接:https://www.haomeiwen.com/subject/axvzkctx.html