• 3.4 封装性


    1. 封装概述

    封装是把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元中,并将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

    封装通过方法来控制成员变量的操作,提高了代码的安全性;把代码用方法进行封装,提高了代码的复用性。

    • 访问方法

    对于成员变量的访问可通过访问方法实现。

    访问方法,能够返回成员变量值的方法称为访问方法,访问方法名一般为getXxx(),因此也称getter方法,如getName()。

    • 修改方法

    对于成员变量的修改可通过修改方法实现。

    修改方法,能够修改成员变量值的方法称为修改方法,修改方法名一般为setXxx(),因此也称setter方法,如setName(String name)。

    2. 封装案例

    定义一个学生类(Student),定义成员变量姓名(String name)和年龄(int age),成员变量都是private修饰,分别为这两个成员变量定义访问方法(getter)和修改方法(setter);定义成员方法hello( ),在其中输出“我的姓名是张三,我的年龄是20”,成员方法用public修饰。

    编写程序,使用无参构造方法实现Student类的实例化,通过修改方法(setter)对成员变量赋值,调用访问方法(getter)输出变量值,并调用hello( )方法。

    • Student类

    1. public class Student {
    2. private String name;
    3. private int age;
    4. public String getName() {
    5. return name;
    6. }
    7. public void setName(String name) {
    8. this.name = name;
    9. }
    10. public int getAge() {
    11. return age;
    12. }
    13. public void setAge(int age) {
    14. this.age = age;
    15. }
    16. public void hello(){
    17. System.out.println("你好,我的名字是:" + this.name +",我的年龄是:" +this.age);
    18. }
    19. }
    • 测试类

    1. public class TestStudent {
    2. @Test
    3. public void test(){
    4. Student stu = new Student();
    5. stu.setName("zhangsan");
    6. stu.setAge(20);
    7. System.out.println("我的名字是:" + stu.getName());
    8. System.out.println("我的年龄是:" + stu.getAge());
    9. stu.hello();
    10. }
    11. }

    3. 练习

    定义一个汽车类(Car),定义成员变量汽车品牌(String brand)、价格(double price),成员变量都是private修饰,分别为这两个成员变量定义访问方法(getter)和修改方法(setter);定义成员方法drive( ),在其中输出“张三开着大众牌(brand值)汽车,价格是10(price值)万”,成员方法用public修饰。

    编写程序,使用无参构造方法实现Car类的实例化,通过修改方法(setter)对成员变量赋值,调用访问方法(getter)输出变量值,并调用drive( )方法。

    4. 思考

    自定义一个类,定义其成员变量,成员变量都是private修饰,为成员变量定义访问方法(getter)和修改方法(setter);定义成员方法,在其中输出“成员变量”信息,成员方法用public修饰。

    编写程序,使用无参构造方法实现类的实例化,通过修改方法(setter)对成员变量赋值,调用访问方法(getter)输出变量值,并调用成员方法。

  • 相关阅读:
    【小米0923】二、循环去除连续重复元素 <栈>
    80C51单片机的七种寻址方式
    MySQL(10):创建和管理表
    OpenGL 色阶
    ArmSoM-RK3588编解码之mpp编码demo解析:mpi_enc_test
    尘封已久的功能!iPhone 15带来了一项早该使用的电池功能
    windows xp 邮件服务器漏洞溢出
    练习题60:接口练习2:真的鸭子会游泳 木头鸭子不会游泳 橡皮鸭子会游泳
    【小白从小学Python、C、Java】【Python-计算机等级考试二级】【Python-数据分析】Python中使用fromat进行进制转换
    安卓的ATV系统
  • 原文地址:https://blog.csdn.net/lv_soso/article/details/133311030