电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

面向对象三大特性之封装


发布日期:2022/6/29
 

java学习已经到了最核心的章节面向对象的三大特性封装继承和多态接下来会写多篇博文(数目不定请关注近期博客吧!午饭们!)来总结这里面的每一个细节小可很希望每一篇文章的阐述会给你带来一点启发小可也是在学习的道路上摸索也希望各位大牛给点指导性的建议

还是先从下面的代码说起吧!

package comivantianCoreFengZhuang;

import static javalangSystem*;

//

class Wife{

private String name;

private double hight;

private double weight;

//构造函数

Wife(String namedouble hightdouble weight){

thisname = name;

thishight = hight;

thisweight = weight;

}

public String getName() {

return name;

}

public void setName(String name) {

thisname = name;

}

public double getHight() {

return hight;

}

public void setHight(double hight) {

thishight = hight;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

thisweight = weight;

}

//

public void washClothes(){

outprintln(thisgetName()+ 给我洗衣服

}

//

public void cookDinner(){

outprintln(thisgetName()+ 给我烧饭吃

}

//

public boolean beautiful(){

if((thishight<= && thishight>=)&&(thisweight<= && thisweight>=)){

outprintln(thisgetName()+ is My favorite!

return true;

}else{

outprintln(thisgetName()+ 不是我的菜

return false;

}

}

}

public class FindWife {

public static void main(String[] args) {

//实例化三个奇女子

Wife fengjie = new Wife(凤姐

Wife furong = new Wife(芙蓉姐姐

Wife xiaoyueyue = new Wife(小月月

//凤姐能不能为你洗衣服?

if(fengjiebeautiful()){

fengjiewashClothes()

okDinner()

}

outprintln(=====================

if(xiaoyueyuebeautiful()){

xiaoyueyuewashClothes()

okDinner()

}

//让小月月改变

xiaoyueyuesetHight(//小月月增高成功

xiaoyueyuesetWeight(//小月月成功减肥

//小月月也成美女了

outprintln(=====================

if(xiaoyueyuebeautiful()){

xiaoyueyuewashClothes()

okDinner()

}

//芙蓉姐姐 还不错

outprintln(=====================

if(furongbeautiful()){

furongwashClothes()

okDinner()

}

}

}

//输出结果如下

凤姐 不是我的菜

=====================

小月月 不是我的菜

=====================

小月月 is My favorite!

小月月 给我洗衣服

小月月 给我烧饭吃

=====================

芙蓉姐姐 is My favorite!

芙蓉姐姐 给我洗衣服

芙蓉姐姐 给我烧饭吃

从上面的一个简单的事例代码看你做了哪些封装?不难回答类的私有数据(又叫做属性就是说你要找老婆的基本特征外貌等)当你找老婆的时候无法直接操作她的身高体重年龄只能通过方法beautiful()来判断当然你不知道Wife类中还有那些私有数据知道判断标准就足够了

所以说封装的主要目的就是隐藏对象细节将对象当做黑盒进行操作 比如有三个奇女子实例供我们选择会调用Wife类的构造函数但是并知道构造函数的细节之后呢你要判断奇女子那个更适合你你就调用了beautiful()函数来判断所以要操作对象一律得通过类提供的方法调用

private也可以用在方法和构造函数的声明上私有方法或构造函数通常是类内部某个共享的演算的流程外界不用知道私有方法的存在

综上所述小可可以认为有以下三种封装形式

封装对象的初始流程

构造函数实现了对象初始化的封装比如代码如没有构造函数Wife(){}对的函数名称和类的写法一样只能是void类型默认是public属性可以为private(后面会专门一篇文章来谈构造函数的)

【privatepublic还有一个protected 等权限修饰符会在后面的章节详细总结

若是没有你new一个对象的时候要反反复复的将事例的属性写一篇比较浪费代码空间构造函数将类属性封装起来一句就可以解决如代码中

如果不写构造函数的在实例化对象的时候JVM会默认创建一个没有参数的构造函数

封装对象操作流程

这里就不难理解了函数或者称为行为动作均可以就是用来操作属性的比如判断是不是美女的函数beautiful()比如身高体重在那个范围三围在那个范围才算是MM是西施还是东施……

再 如你找到了老婆调用了getName()获得了美女的芳心她便把自己的基本属性信息交给你了她还可以帮你洗衣服做晚餐等等这些都是类Wife的操作流程

//

public void washClothes(){

outprintln(thisgetName()+ 给我洗衣服

}

//

public void cookDinner(){

outprintln(thisgetName()+ 给我烧饭吃

}

封装对象内部数据

因为Wife类的基本信息在你得到她的芳心之前都是私有的你是不知道的但是她为了让你了解她于是提供了取值方法(Getter)这样你便可以得到她的基本信息保证了改奇女子信息的安全性

所以说封装在某种程度上也保证了数据的安全

当然了当你们在一起了你可以让她减肥或者增高当然要征得她同意来满足你的视觉效果Setter当然private类型的数据还有它的访问范围(后面还会接着说)在同一个类中还是可以访问的如例子中手动来修改小月月童鞋的体重让她符合你的口味

//让小月月改变

xiaoyueyuesetHight(//小月月增高成功

xiaoyueyuesetWeight(//小月月成功减肥

封装的初步认识就到这里虽然是初步但封装的基本概念已经讲完了!

上一篇:销毁对象的三把利剑

下一篇:让自己学会写的一个在线升级的程序