zoukankan      html  css  js  c++  java
  • 对象,内存与封装

     1 /*栈内存:存储变量名的地址与基本类型;
     2 堆内存:存储对象(数据);
     3 new:1.表示创建一个对象;
     4     2.表示实例化对象;
     5     *3.表示申请内存空间:
     6 (64位 字符串占8个字节,整形占4个字节)    
     7  Horse h1= new Horse();
     8  Horse h2 =new Horse();
     9  h1.name=“小白”;
    10  h1.age=100;
    11  h2 =h1;//对象之间的赋值,相同类型才可以赋值;
    12  当堆内存的对象没有被栈内存的引用所指向,那么堆内存的对象被jvm的GC视为垃圾
    13  */
    14  /*
    15  封装:隐藏实现细节,仅对外提供访问接口;
    16  (属性,方法,类,组件,模块化,系统级)的封装
    17  优点:
    18      模块化
    19      信息隐藏
    20      代码重用
    21      插件化易于调试
    22      具有安全性
    23  缺点:
    24     会影响执行效率 
    25     
    26 封装性
    27    如果属性没有封装,那么在本类外创建对象后,可直接访问属性
    28     private 关键字: 访问权限修饰符(私有的属性或方法,只能在本类访问)
    29     但想要类的外部访问私有属性,需要提供公有的方法来间接访问
    30     通常在一个类中,属性都私有化,并对外提供getter and setter 方法 ;
    31     
    32 */     
    33 public class Test2 {
    34 
    35     public static void main(String[] args) {
    36         // TODO Auto-generated method stub
    37         Person p1 = new Person();
    38         p1.setName("mmm");  
    39         p1.setAge(0);
    40             
    41     }
    42 
    43 }
    44 class Person{
    45     //属性的封装
    46     private String name;//成员变量
    47     private int  age;
    48     
    49     //ggetter and setter 
    50     
    51     //对外提供一个获取name属性的方法
    52     private String getName() {
    53         return name;
    54     }
    55     //对外提供一个为name属性设置的方法
    56     void setName(String name) {
    57         this.name = name;
    58     }
    59     private int getAge() {
    60         return age;
    61     }
    62     void setAge(int age) {
    63         this.age = age;
    64     }
    65     
    66     
    67 }
    68 
    69 成员变量与局部变量
    70   1.在类的位置不同:
    71     成员变量:在类中定义;
    72     局部变量:在方法中定义或者方法的参数;
    73   2.在内存位置不同:
    74      成员变量:在堆内存(成员变量属与对象,对象进入堆内存)
    75      局部变量:在栈内存(局部变量属与方法,方法进入堆内存)
    76   3.初始值不同:
    77      成员变量:有默认初始化,引用类型默认为null
    78      局部变量:没有默认初始化,必须定义,赋值,然后才能使用;
    79   4.周期不同:
    80     成员变量:顺着对象的创建而存在,顺着对象的销毁而消失
    81     
    82     局部变量:顺着方法的调用而存在,顺着方法的调用完毕而消失
    83  注意:
    84     成员变量名称与局部变量名称可以一样,在方法中使用是采用就近原则;
    85      
  • 相关阅读:
    Android 电话播号和短信发送以及单元测试
    Android 自动判断是电话,网址,EMAIL方法之Linkify
    Android 解析网络数据传输JSON或XML对象
    Android ListView常用属性及数据绑定显示
    Android SQLite使用详解
    Android Content Provider 使用
    SQL Server 2008之空间数据应用(二)
    使用ASP.NET IIS注册工具(Aspnet_regiis.exe)注册IIS
    MSDN(VS2010版)使用问题小记
    ArcGIS Server开发——Web ADF应用程序开发入门
  • 原文地址:https://www.cnblogs.com/yyb6/p/9080979.html
Copyright © 2011-2022 走看看