当前位置:首页 > 壁挂炉 > 文章正文

你知道为什么要封装吗?

编辑:[db:作者] 时间:2024-08-25 05:58:29

/封装性如果属性没有封装,那么在本类之外,可以直接随意访问本类属性,这是不屈安的private 关键字 私有的 public 共有的 私有的属性和方法只能在本类中利用,共有的属性和方法,可以直接在别的类直接访问/import java.util.Arrays;public class Test8{public static void main(String[] args){Person p1=Person();p1.name="菲菲";p1.age=18;}}//没有封装之前class Person{//在类中定义属性(特色)private String name;private int age;}

对你们看到的没有错,在属性前面加上private就可以了,然后我们再编译一下上边这一篇代码

看到没,这样 就不能访问了吧,但是我又不得访问你的属性怎么办,这不抵牾吗?我门在生活中也有这样的例子,既有限定的方法,又有放的方法!
比如你是外地的车牌,是不能进京的,那为什么北京又有很多外地牌子的车呢?那你得办进京证!
办了进京证就可以在北京开你的小汽车了!
那么我们 在代码中怎么办进京证呢?

想要在类外部访问私有属性,我们须要供应公有的访问来间接访问

/封装性如果属性没有封装,那么在本类之外,可以直接随意访问本类属性,这是不屈安的private 关键字 私有的/import java.util.Arrays;public class Test8{public static void main(String[] args){Person p1=Person();//p1.name="菲菲";//p1.age=18;p1.setName("菲菲");p1.setAge(18);}}//没有封装之前class Person{//在类中定义属性(特色)private String name;private int age;//进京证 getter and setter 规范getset方法 都这样写public void setName(String name){this.name=name;//不带this的name 就近原则 他是方法参数的name//this 代表当前工具}//对外供应获取name属性的方法public String getName(){return name;}//同样的道理 我们写age的进京证public void setAge(int age){this.age=age;}//对外供应获取name属性的方法public int getAge(){return age;}}

有的童鞋就会问了,封装前和封装后的效果不是一样吗?都是set属性啊,有什么差异呢? 我们这样写结果是一样的,但是意义是不一样的,没封装之前的意义便是我偷了你100块钱,封装之后的意义便是我找你借100块钱,这两种意义一样吗?借你钱得经由你赞许的,我偷是可以不经由你赞许的,如果没有封装之前,我想赋什么值就赋什么值,你没有反抗的权利,p1.name="shabi";那你就变成shabi了啊,这tm谁顶得住,我设置年事,如果设置成负数了怎么办,如果我用set设置呢?再举个例子,是不是所有的车都可以办进京证呢?如果是黑车呢?我们在代码中就可以这样做!

//没有封装之前class Person{//在类中定义属性(特色)private String name;private int age;//进京证 getter and setter 规范getset方法 都这样写public void setName(String name){ if("shabi".equals(name)){return;}this.name=name;//不带this的name 就近原则 他是方法参数的name}//对外供应获取name属性的方法public String getName(){return name;}//同样的道理 我们写age的进京证public void setAge(int age){ if(age>150||age<0){return;}this.age=age;}//对外供应获取name属性的方法public int getAge(){return age;}}

常日在一个类中,属性都私有化,并对外供应getter and setter 方法,这便是属性的封装!

3、成员变量和局部变量在类中的位置不同 成员变量:在类中定义 局部变量:在方法中定义或者方法的参数 在内存中的位置不同 成员变量:在堆内存(成员变量属于工具,工具进堆内存) 局部变量:在栈内存(局部变量属于方法,方法进栈内存) 生命周期不同 成员变量:随着工具的创建而存在,随着工具的销毁而消逝 局部变量:随着方法的调用而存在,随着方法的调用完毕而消逝 初始化值不同 成员变量:有默认初始化值,引用类型默认为null,这个大家试一试就知道了 局部变量:没有默认初始化值,必须定义,赋值,然后才能利用 把稳: 局部变量名称可以和成员变量名称一样,在方法中利用的时候,采取的是就近原则。
代码实例:

public class Test8{ public static void main(String[] args){ Person p1=Person(); //p1.name=”菲菲”; //p1.age=18; p1.setName(“菲菲”); p1.setAge(18); p1.run(); }}//没有封装之前class Person{ //在类中定义属性(特色) private String name;//成员变量 ,在类中定义 private int age;//;//成员变量 ,在类中定义 public void run(int leng){//参数也是局部变量 int m=length;//m 也是局部变量 }}

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/bgl/147113.html

XML地图 | 自定链接

Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码

声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com