zoukankan      html  css  js  c++  java
  • 类和引用内存分析和封装

    一、面向对象——找人帮自己办事(自己省事),面向过程——事情都亲力亲为;

    概念:

     

     二、类

    使用对象:导包、创建、使用(点属性/点方法)

    引用类型的初始值都是null;

    三、内存分析

    首先是方法区,方法区存储的是.class数据信息(成员变量、成员方法、main方法..);

    方法压栈执行,方法里的对象名相当于变量名,方法中的变量是局部变量;

    new出来的对象都堆内存中,除了基本数据类型(对象名保存的是地址值和对象内容信息都在占内存中,可以直接 =),引用数据类型的对象名 = 运算时候用的是栈内存中的对象名存储的是地址值,指向堆内存中这个对象的地址值;

    1、调用对象内存图:

    栈内存中变量名称保存的是堆内存中该对象的地址值; 

    方法调用执行结束,立刻从栈内存中消失,立即弹出,出栈,下面的方法重见天日,永远是只执行栈内存的压在最上面的方法;堆内存中创建的对象保存的成员方法的信息是方法区该方法的地址值;

    2、phone1和phone2两个对象内存图:

    3、两个对象引用指向同一对象:

     4、对象作为方法参数传递:

     5、对象类型作为方法的返回值

     三、成员变量和局部变量

    1、区别

    垃圾回收是jvm工作,不是程序控制;

    局部变量不赋初始值不能用:

     四、封装

    1、方法封装

    2、关键字private

    成员变量默认是public,被调用时候可以直接 点.成员变量 = 赋值,

    设置为private的成员变量,要添加getXxx和setXxx方法,供外界赋值和获取值,可以在get/set方法体中控制外界调用时候设置值合理不合理处理;

    3、private修饰的成员变量,的getXxx方法特例:

    boolean类型的成员变量get方法是 isXxx();

     

     4、this关键字

    五、构造方法——创建对象的方法

     六、定义一个标准的对象类

  • 相关阅读:
    BZOJ 1003--[ZJOI2006]物流运输(最短路)
    BZOJ 1002--[FJOI2007]轮状病毒(高精度)
    BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
    BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画(几何&区间dp)
    BZOJ 2821--作诗(分块)
    BZOJ 2724--蒲公英(分块)
    BZOJ 2388--旅行规划(分块&单调栈&二分)
    用python操作Git
    JS常用到的日期函数
    Python3.7使用celery出现from . import async, base SyntaxError: invalid syntax错误
  • 原文地址:https://www.cnblogs.com/wmqiang/p/11247485.html
Copyright © 2011-2022 走看看