Java面向对象之封装

系统管理员 2024-05-05 06:39 214阅读 0赞

Java三大特性之封装

1.含义

2.运用

3.运用场景

4.小结

  1. 含义
    封装,通俗的说就是把一堆东西封装起来,就好像日常的快递,要寄出去的东西用一个盒子包装起来,这其实就是封装。所谓封装也就是里面的东西是不可见的。
    在面向对象中封装有两层含义:①属性和方法不能缺少,也就是对象的封装(数据封装);②保护数据的一种机制,将对象的属性和方法隐藏、包装起来。
  2. 运用
    那么我们该如何封装数据呢?是否还记得访问权限修饰符。没错,其实就是用权限限制别的地方访问,比如当前包下的访问,当前类下的访问。而我们要实现封装,那么就要用到访问权限修饰符——private。

    • 接下来我们用代码实现如何运用封装
      例1:无封装代码

    public class Cat{

    1. //创建一个猫类
    2. //属性
    3. public String name;
    4. public String color;
    5. public String type;
    6. //方法
    7. public void run(){
    8. System.out.println("名字叫"+name+"的猫咪跑起来了.......");
    9. }
    10. public void eat(){
    11. System.out.println("一只"+color+"的,品种为"+type+"的猫咪在吃?鱼");
    12. }

    }

    public class Test{

    1. //定义一个测试类
    2. public static void main(String[] args) {
    3. //主方法
    4. //对象实例化
    5. Cat cat = new Cat();
    6. //使用成员属性
    7. cat.name ="小花";
    8. cat.color ="白色";
    9. cat.type ="小胖猫";
    10. //使用成员方法
    11. cat.run();
    12. cat.eat();
    13. }

    }

运行后的代码效果图:
在这里插入图片描述

  • 接下来我们运用封装来实现上面的例子
    例2:进行代码封装

    public class Cat{

    1. //创建一个猫类
    2. //属性
    3. private String name;
    4. private String color;
    5. private String type;
    6. //方法
    7. public void run(){
    8. System.out.println("名字叫"+name+"的猫咪跑起来了.......");
    9. }
    10. public void eat(){
    11. System.out.println("一只"+color+"的,品种为"+type+"的猫咪在吃?鱼");
    12. }

    }

    public class Test{

    1. //定义一个测试类
    2. public static void main(String[] args) {
    3. //主方法
    4. //对象实例化
    5. Cat cat = new Cat();
    6. //使用成员属性
    7. cat.name ="小花"; //此处报错(The field Cat.name is not visible)
    8. cat.color ="白色";//此处报错(The field Cat.color is not visible)
    9. cat.type ="小胖猫";//此处报错(The field Cat.type is not visible)
    10. //使用成员方法
    11. cat.run();
    12. cat.eat();
    13. }

    }

  • he field Cat.xxx is not visible的意思是:该字段是不可见的,也就是说属性是不可访问的,由此可做到封装数据的效果,那么问题来了,现在不能填写属性,也就是说现在属性是null,看如下运行效果图:
    在这里插入图片描述

  • 那么该怎么设置属性呢?不怕,办法肯定是有的,在Java中为了解决这个问题,特地搞出了一个规范,那就是getter方法和setter方法。getter方法即获取信息,setter方法即设置/设置信息.具体操作看如下代码:

    public class Cat{

    1. //创建一个锚类
    2. //属性
    3. private String name;
    4. private String color;
    5. private String type;
    6. //方法
    7. //---------getter方法---------->
    8. public String getName() {
    9. return name;
    10. }
    11. public String getColor() {
    12. return color;
    13. }
    14. public String getType() {
    15. return type;
    16. }
    17. //<----------gettet方法---------
    18. //----------setter方法--------->
    19. public void setName(String name) {
    20. this.name = name;
    21. }
    22. public void setColor(String color) {
    23. this.color = color;
    24. }
    25. public void setType(String type) {
    26. this.type = type;
    27. }
    28. //<---------setter方法--------------
    29. //普通方法
    30. public void run(){
    31. System.out.println("名字叫"+name+"的猫咪跑起来了.......");
    32. }
    33. public void eat(){
    34. System.out.println("一只"+color+"的,品种为"+type+"的猫咪在吃?鱼");
    35. }

    }

    public class Test{

    1. //定义一个测试类
    2. public static void main(String[] args) {
    3. //主方法
    4. //对象实例化
    5. Cat cat = new Cat();
    6. //使用getter,setter方法设置成员属性
    7. cat.setColor("白色");
    8. cat.setName("小花");
    9. cat.setType("小胖猫");
    10. //使用成员方法
    11. cat.run();
    12. cat.eat();
    13. }

    }

  • 运行代码如下:
    在这里插入图片描述

  • 最终看运行效果和一开始的效果一样,由此就是通过封装数据,使用Java的规则来设置属性,如果想直接获取成员属性可以get一下就可以了,在这里不作演示。||注意:getter方法和setter方法的命名规范是 getXxx,setXxx.|| 也就是说自定义的首字母要大写,不过一般情况是直接用属性来命名,把属性名的首字母大写即可。
  1. 运用场景

    • 在 Java 中的数据没必要透露的时候都应该使用封装,通常来说,私有属性的应用场景如下:
      ①正常情况下,所有属性应该封装为 private 私有属性
      ②如果能确保外部不能访问,可以设置为公开字段
      ③特殊情况下,可以使用 final 类型1公开字段
  2. 小结
    数据封装应注意这几个问题:
    ①所有的属性和方法都应该尽量使用 private 私有关键字封装
    ②属性可以通过 public 公开方法进行访问,到后期尽量关闭 setter 方法,即只读属性

以上就是我所了解的封装,封装本质上是利用访问权限private来限制,对外不可见。要想外部想访问属性或者方法的话,那么就使用getter方法(getter方法是对外开放的)setter方法是设置用的。

发表评论

表情:
评论列表 (有 0 条评论,214人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面向对象封装

    封装 该露的露,该藏的藏 我们程序设计要追求“高内聚,低耦合”。 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉; 低耦合:仅暴露少量的方法给外部使用。

    相关 面向对象封装

    封装 隐藏细节 - 抽离共有 封装: 对外隐藏类中一些属性与方法的实现细节 优点:外界不能直接访问,让内部的属性与方法具有安全保障 clas

    相关 面向对象封装

    一、什么是封装 什么是封装,就是将复杂的丑陋的,隐私的细节隐藏到内部,对外提供简单的使用接口,对外隐藏内部实现细节,并提供访问的接口 二、为什么需要封装 两个目的:1.为