• 【Java基础】成员变量和局部变量及封装


    目录

    一、成员变量和局部变量的区别

    二、封装

    private关键字

    private的使用

    this关键字


    一、成员变量和局部变量的区别

    类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)

    内存中位置不同:成员变量(堆内存)局部变量(栈内存)

    生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)

    初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)

    二、封装

    1.、封装概述,是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的

    2.、封装原则,将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法

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

    private关键字

    private是一个修饰符,可以用来修饰成员(成员变量,成员方法)

    被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

    提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰

    提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

    示例代码:

    1. /*
    2. 学生类
    3. */
    4. class Student {
    5. //成员变量
    6. String name;
    7. private int age;
    8. //提供get/set方法
    9. public void setAge(int a) {
    10. if(a<0 || a>120) {
    11. System.out.println("你给的年龄有误");
    12. } else {
    13. age = a;
    14. }
    15. }
    16. public int getAge() {
    17. return age;
    18. }
    19. //成员方法
    20. public void show() {
    21. System.out.println(name + "," + age);
    22. }
    23. }
    24. /*
    25. 学生测试类
    26. */
    27. public class StudentDemo {
    28. public static void main(String[] args) {
    29. //创建对象
    30. Student s = new Student();
    31. //给成员变量赋值
    32. s.name = "小明";
    33. s.setAge(22);
    34. //调用show方法
    35. s.show();
    36. }
    37. }

    private的使用

    需求:定义标准的学生类,要求name和age使用private修饰,并提供set和get方法以及便于显示数据的show方法,测试类中创建对象并使用,要求控制台输出 小李,22

    代码:

    1. /*
    2. 学生类
    3. */
    4. class Student {
    5. //成员变量
    6. private String name;
    7. private int age;
    8. //get/set方法
    9. public void setName(String n) {
    10. name = n;
    11. }
    12. public String getName() {
    13. return name;
    14. }
    15. public void setAge(int a) {
    16. age = a;
    17. }
    18. public int getAge() {
    19. return age;
    20. }
    21. public void show() {
    22. System.out.println(name + "," + age);
    23. }
    24. }
    25. /*
    26. 学生测试类
    27. */
    28. public class StudentDemo {
    29. public static void main(String[] args) {
    30. //创建对象
    31. Student s = new Student();
    32. //使用set方法给成员变量赋值
    33. s.setName("小李");
    34. s.setAge(22);
    35. s.show();
    36. //使用get方法获取成员变量的值
    37. System.out.println(s.getName() + "---" + s.getAge());
    38. System.out.println(s.getName() + "," + s.getAge());
    39. }
    40. }

    this关键字

    this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)

    方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量

    方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量

    1. public class Student {
    2. private String name;
    3. private int age;
    4. public void setName(String name) {
    5. this.name = name;
    6. }
    7. public String getName() {
    8. return name;
    9. }
    10. public void setAge(int age) {
    11. this.age = age;
    12. }
    13. public int getAge() {
    14. return age;
    15. }
    16. public void show() {
    17. System.out.println(name + "," + age);
    18. }
    19. }

    注意:this代表当前调用方法的引用,哪个对象调用的方法,this就代表哪一个对象

     

  • 相关阅读:
    Stream入门
    海外媒体发稿:葡萄牙-实现高效媒体软文发稿计划-大舍传媒
    线上化变迁,使得销售与市场的脱节像一场濒临破裂的婚姻!
    WebServer流程讲解(注册模块)
    超声波清洗机需要注意什么?不能错过的超声波清洗机
    ISO认证好处,ISO9001认证办理流程
    软考系列(系统架构师)- 2021年系统架构师软考案例分析考点
    【MySQL】MySQL的自然连接和USING连接详细总结
    计算某个字符出现的次数
    计算机网络 - 网络层 选择填空判断复习题
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/126476999