为什么要给元器件封装,自己做的元器件封装是什么

首页 > 上门服务 > 作者:YD1662023-06-24 03:02:05

国际案例进来先点赞

说封装,咱们先说说生活中封装,比如你想买一个手机用,你只在淘宝下单就可以了,这个手机怎么生产的,里边的代码怎么写的,你不需要了解,这就是封装,也就是厂家直接把手机给你封装好,你掏钱用就可以了。其实封装性的思想,可以理解为社会分工!

1、封装性的概念

封装性是面向对象的三大特征之一封账就是隐藏实现细节,仅对外提供访问的接口。内部的具体实现细节我不关心。就和老板布置了一个任务一样,你如何苦逼的我不管,我只要结果!封装有:属性的封装,类的封装,组件的封装,模块化封装,系统级封装

2、封装的好处

/** 封装性 如果属性没有封装,那么在本类之外,可以直接随意访问本类属性,这是不安全的 */ import java.util.Arrays; public class Test8{ public static void main(String[] args){ Person p1=Person(); p1.name="菲菲"; p1.age=18; } } //没有封装之前 class Person{ //在类中定义属性(特征) String name; int age; }

这样编译和运行时完全没有问题的,我们封装一下,封装之后的代码

/** 封装性 如果属性没有封装,那么在本类之外,可以直接随意访问本类属性,这是不安全的 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就可以了,然后我们再编译一下上边这一篇代码


为什么要给元器件封装,自己做的元器件封装是什么(1)

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


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


/** 封装性 如果属性没有封装,那么在本类之外,可以直接随意访问本类属性,这是不安全的 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、成员变量和局部变量

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 也是局部变量 } }

为什么要给元器件封装,自己做的元器件封装是什么(2)


栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.