zoukankan      html  css  js  c++  java
  • 封装

    定义: 

      1.把对象的状态和行为(字段和方法)看成一个统一的整体,将二者存放在一个独立的模块中(类);

      2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;

    封装机制在程序中的体现是:

      把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。

    JavaBean规范:

      一个类必须有一个参数为空的构造方法,所有的字段必须使用private修饰;并向外提供getter/setter 若字段的第二个字母是小写的,把第一个字母变成大的,再加上get/set作为前缀;(最常见的) 若第二个字母是大写的,就保持原样再加上get/set;(特殊)

      1 class Person
      2 {
      3     private String name;
      4 
      5     //把字段私有化起来,  private 修饰
      6     //private表示 访问修饰符中的一个,表示私有的意思;
      7     //它的访问权限是  当前定义的类里面,,  类访问权限
      8     private int age;
      9 
     10     private boolean isMan;
     11     /*
     12         一旦我们把某个字段使用private修饰起来之后,外界就不能直接访问了;
     13 
     14         那怎么办呢?
     15             
     16                 为每一个私有化起来的字段提供一对外界可以访问的,getter/setter方法;
     17                     
     18                     getter方法用于获取该字段的值;
     19                         格式:  
     20                                 [非私有修饰符]  字段类型 get字段的名字(首字母大写)()
     21                                 {
     22                                     return 字段名;
     23                                 }
     24 
     25 
     26                     setter方法用于给该字段设置一个值:
     27                         格式:
     28                                 [非私有修饰符] void set字段的名字(首字母大写)(字段类型 变量)
     29                                 {
     30                                     字段 = 变量;
     31                                 }
     32 
     33                     其他的数据类型都是这样的,(getter/setter)
     34 
     35                     boolean:  只有setter方法和 is方法
     36 
     37 
     38             JavaBean:规范
     39 
     40                 Field不是属性?
     41     
     42     */
     43     
     44 
     45         //getter
     46 
     47         public int getAge()
     48         {
     49             return age;//直接访问字段的值
     50         }
     51 
     52         //setter
     53         public void setAge(int a)
     54         {
     55             if(a<=0 || a >130)
     56             {
     57                 System.out.println("亲,数据错误");
     58                 return;//结束方法
     59             }
     60             age = a;//赋值操作    
     61         }
     62         
     63 
     64         public String  getName()//OOXXX这个才叫属性
     65         {
     66             return name;
     67         }
     68         
     69         /**
     70         public void setName(String n)
     71         {
     72             name = n;
     73         }
     74         **/
     75 
     76         private void setName(String n)
     77         {
     78             name = n;
     79         }
     80 
     81     //boolean类型
     82 
     83     public boolean isIsman()
     84     {
     85         return isMan;
     86     }
     87 
     88 
     89     /**
     90     Person(String n, int a)
     91     {
     92         name = n;
     93         age = a;
     94     }
     95     **/
     96 
     97 
     98 
     99     
    100     void p()
    101     {
    102         System.out.println(name +"-->" + age);
    103     }
    104 
    105 }
    106 
    107 class PrivateDemo
    108 {
    109     public static void main(String[] args) 
    110     {    
    111 
    112         //问题1: 参数传递问题依然没有解决;
    113         //
    114         //Person p = new Person("Will",-2);
    115 
    116         Person p = new Person();
    117         //p.age = 12;//PrivateDemo.java:36: 错误: age可以在Person中访问private
    118         
    119         p.setAge(17);//把17通过setAge方法赋值给age字段
    120         //System.out.println(p.age);
    121         //p.p();
    122 
    123         int age = p.getAge();
    124         System.out.println(age);
    125 
    126         //p.setName("坏人");//不能访问
    127     }
    128 }
  • 相关阅读:
    web.xml
    web.xml hello1代码分析
    annotation
    injection
    container
    build tool
    version control
    url与uri的区别
    函数式语言
    http协议解析过程
  • 原文地址:https://www.cnblogs.com/WestVillagedevil/p/6093342.html
Copyright © 2011-2022 走看看