zoukankan      html  css  js  c++  java
  • 面向对象(类,封装,this,构造方法)

    无论面向对象还是面向过程, 这俩都是解决问题的思路而已, 只是角度不同.

    面向过程:

    强调解决问题的每一个步骤都亲力亲为,每一个细节都自己手动实现.


    面向对象:

    使用特定功能对象去解决特定的问题, 每一个细节不需要关注,只需要创建对应的对象即可.


    面向对象是基于面向过程的

    类和对象及他们的关系
    类: 具有相同特征和行为(功能)的事物的统称 , 是一个抽象概念
    对象: 这类事物中某个确定的个体


    类和对象的关系
    一个类可以创建多个对象 , 类是对象的抽象, 对象是类的实例.

    描述一个事物----> 类

    特征----> 成员属性(成员变量) 
    行为(功能)---> 成员方法

    类的创建格式:
    修饰符 class 类名{

    数据类型 成员变量名1;
    数据类型 成员变量名2;
    数据类型 成员变量名3;
    ...

    成员方法1;
    成员方法2;
    成员方法3;
    ...
    }

    修饰符: public
    类名: 标识符 见名知意
    成员变量列表: 事物的特征 ,只写当前场景关注的特征,没必要把事物的所有特征全都写上 . 写法类似于定义变量
    成员方法: 事物的行为(功能) 只写当前场景关注的行为(特征) 写法上类似于之前的定义方法, 区别在于此时写的话要去掉static

    当一个类第一次使用的时候要载入到方法区 , 后续每一次再使用这个类 就不需要重复载入

    成员变量和局部变量区别
    1.定义的位置不同
    局部变量: 定义在方法的内部
    成员变量: 定义在类的内部, 方法的外部
    2.在内存中的存放位置不同
    局部变量: 局部变量存放在 栈区
    成员变量: 成员变量存放在 堆区
    3.生命周期不同
    局部变量: 随着方法的调用而产生,随着方法的结束而消失 相对较短
    成员变量: 随着对象创建而产生,随着对象数据回收而消失 相对较长
    4.初始值不同
    局部变量: 没有初始值, 使用之前必须进行赋值
    成员变量: 有初始值, 引用类型 null, 整数 0 , 小数0.0 字符:空格, 布尔 false

    封装性
    封装是 面向对象的三大特征之一, 另外两个是继承 多态

    类名:Person
    属性:name ,age
    方法:展示

    封装好处: 提高程序的安全性

    对属性封装的步骤:
    1.使用private关键字修饰对应的属性 , 防止外界通过对象名.属性的方式直接访问属性
    2.书写对应属性的set和get方法 , 给外界一个访问属性的通道

    封装是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。
    封装的原则:
    将不需要对外提供的内容都隐藏起来。
    把属性隐藏,提供公共方法对其访问。
    成员变量private,提供对应的getXxx()/setXxx()方法

    好处:
    通过方法来控制成员变量的操作,提高了代码的安全性
    把代码用方法进行封装,提高了代码的复用性

    变量访问的就近原则:
    当出现多个重名变量的时候, 目标代码使用的是离这行代码最近的那个变量

    this可以解决的问题:
    当局部变量和成员变量重名的时候, 想在特定的代码处访问成员变量, 就可以在目标行的变量名前面加this.
    this只的是当前调用这个方法的对象
    this 谁调用指的就是谁

    构造方法
    是一个方法. 作用: 给对象的数据赋值默认值

    定义格式:
    修饰符 方法名(参数列表){

    若干条初始化语句

    }
    修饰符: public
    方法名: 直接写类名
    参数列表: 跟之前定义方法写形式参数一致
    注意 构造方法 没有返回值类型

    如果我们自己不手动写无参数的构造方法, 系统会默认提供一个,如果我们自己手动书写了无参的构造方法,
    那系统就不会给提供,使用的时候直接使用我们自己写的构造方法

    构造方法 也是方法 也可以进行重载

    但凡我们手写了任意的构造方法, 系统就都不会给提供无参构造方法了 ,
    当此时非要用无参的构造方法创建对象的时候, 必须自己手写无参的构造方法

  • 相关阅读:
    swoole 安装方法 使用即时聊天
    git的介绍以及简单应用
    curl的应用
    linux下监听和同步代码配置
    mac skim 修改背景色
    php 编译安装的一个 configure 配置
    mac mysql error You must reset your password using ALTER USER statement before executing this statement.
    yii2 控制器里 action 大小写组合造成的路由问题
    warning : json_decode(): option JSON_BIGINT_AS_STRING not implemented in xxx
    redis 自启动脚本
  • 原文地址:https://www.cnblogs.com/caigq/p/6965420.html
Copyright © 2011-2022 走看看