Java面向对象:封装
创始人
2024-01-25 12:30:25
0

1.封装:

  • 面向对象的三大特征:

封装、继承、多态

  • 它是什么:

封装:告诉我们,如何正确设计对象的属性和方法。

封装的原则:对象代表什么,就得封装对应数据,并提供数据对应的行为。

  • 理解封装思想:
  • 需求一:

设计一个:人对象,要求这个对象有:名称,年龄,吃饭,睡觉;

public class People{名称年龄吃饭睡觉
}
  • 需求二:

 人画⚪

请针对这个需要面向对象设计

分析:

1.涉及到两个对象:人、圆;

2.需求是人画圆,这属于一种行为,因此需要在圆对象里封装画圆的数据以及画圆的行为方法,提供给人使用,完成人画圆;

3.圆对象的成员变量:圆半径;成员方法:画圆。

实现:

 需求三:

  人关门

  • 请针对这个需求面向对象设计

  • 分析:

    1. 涉及到2个对象:人、门;
    2. 因为需求人关门,这属于一种行为,因此需要在门对象里封装关门的行为方法,提供给人使用,完成人关门
    3. 门对象:成员方法:关门
  • 实现

如果以上还不能理解的话,那就再举一个例子:

  • 需求:张三砍死了李四

 

 

  • 请根据这个需求面向对象设计:

    1. 就问张三砍死了李四,是张三死亡,还是李四死亡?

      答:肯定是李四死亡。

    2. 那么死亡的方法是定义在张三,还是定义在李四?

      答:肯定是定义在李四。

    3. 那么用程序员的思想怎么理解这个杀人案件?

      答:是张三 调用了 李四的死亡方法,致使李四死亡。

2.理解封装思想的好处

sum公司在开发Java编程语言的时候,已经写了各种各样的对象,这些对象,方便我们程序员用来解决实际开发中的业务问题

 举个例子:sum公司知道对字符串的操作是很常见的,所以,就给我们程序员提供了一个代表字符串的对象

       拥有操作字符串的很多方法

  • 有啥事?找对象,调用方法就行,传参数就行,编程变得很简单

  • 降低我们的学习成本,可以少学、少记一点,用的时候,看一下文档就好了

二、优化封装

1. 如何进行更好的封装

  • 一般建议对成员变量使用private(私有、隐藏)关键字修饰进(private修饰的成员只能在当前类中访问)。

    • 这种写法,在实际开发中,非常的不好,不推荐使用

 使用private关键字修饰的成员只能在当前类中访问

 

就好比,你现实中刚认识一个妹子,她不可能一下子就给你暴露她的年龄或者隐私吧!

合理暴露:为每个成员变量提供配套public修饰的getter、setter方法,暴露其取值和赋值。

像这样,通过getAge方法给我们取值;通过setAge方法给我们赋值,并且对所赋值进行一些合法判断。

2. 优化封装小案例

  • 需求:录入学生年龄并判断年龄是否正常

    • 学生类

package Test;public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age >=0 && age <= 200){this.age = age;}else {System.out.println(this.name + "的年龄不正常!!!");}}
}

实现类

public class StudentTest {public static void main(String[] args) {Student stu1 = new Student();stu1.setName("黑猫警长");stu1.setAge(15);System.out.println(stu1.getName()+"的年龄是"+stu1.getAge());System.out.println("-----------------");Student stu2 = new Student();stu2.setName("一只耳");stu2.setAge(-14);System.out.println(stu2.getName()+"的年龄是"+stu2.getAge());}
}

控制台输出结果:

 

  • 可以看到,黑猫警长的年龄经过setAge方法的判断是正常范围,所以可以正常赋值,输出是赋值后的数据

  • 一只耳的年龄经过setAge方法的判断不是正常范围,所以不可以进行赋值,输出的是默认值

重点总结

1、如何进行更好的封装?

  • 一般会把成员变量使用private隐藏起来,对外就不能直接访问了
  • 为每个成员变量提供public修饰的getter、setter方法,暴露其取值和赋值

相关内容

热门资讯

海军山东舰航母编队圆满结束访问...   新华社香港7月7日电(黎云、张懋瑄)海军山东舰航母编队7日上午圆满结束为期5天的访问,驶离香港。...
创业只选万创中国 创业只选万创... 6月30日,“万众创新公共服务平台简称万创中国平台”正式上线新闻发布会在北京隆重召开。同时,万创中国...
装修的项目经理的职责有哪些? ... 内容来自用户:李鹏亚装修项目经理岗位职责【篇一:装饰公司项目经理职责】【装饰公司项目经理职责】好的设...
万创中国举办创新创业大赛 万创... 4月21日,2017海峡两岸青年创业大赛—泉州赛区决赛在泉州海丝国际中心四楼海丝国际厅成功举办。泉州...
万创中国安卓版(创业服务平台)... 万创中国安卓版(创业服务平台)是一款专为创业者准备的手机应用,是中国超有价值的万众创新公共服务平台,...
10大国外代理服务器网站 10...   国外代理市场如今已经非常火热,可以说当前的国外代理ip是五花八门,所以导致了大家在选择平台的时候...
小玩意饰品加盟、加盟费多少 总... 小玩意饰品品牌是广州市盈芷贸易有限公司旗下的饰品品牌。为满足广大时尚女孩的需求,引进日韩潮流元素,小...
饰品店加盟哪家好 十大排行榜分... 八、啊呀呀七彩花饰品店加盟费用:10-20万啊呀呀.七彩花隶属于啊呀呀国际时尚,是由最懂生活和设计的...
开一家乡村基加盟店大概需要多少... 开一家乡村基加盟店大概需要多少钱?在如今这样一种大好的经济形势下,自由创业者也越来越多,大家都希望能...
重庆乡村基加盟费用 重庆乡村基... 重庆乡村基加盟条件1目前可以申请参加“合作伙伴”的地区有哪些?目前“合作伙伴”计划仅在贵州省和云南省...