首页 > 编程语言 >Java—成员变量与局部变量、封装

Java—成员变量与局部变量、封装

时间:2023-02-01 21:23:17浏览次数:53  
标签:封装 变量 成员 age 局部变量 stu Java public name


一、成员变量与局部变量

  1.定义的位置不同

    成员变量:成员变量定义在方法外,类中;

    局部变量:局部变量定义在方法中。

  2.生命周期不同

    成员变量:是随着对象的加载而加载,随着对象的销毁而销毁;

    局部变量:是随着方法的加载而加载,随着方法的结束而结束;

  3.存储的位置不同

    成员变量:存储在堆内存中;

    局部变量:存储在栈内存中;

  4.是否有默认值

    成员变量:是有默认值的;

      局部变量:是没有默认值,必须先赋值才能使用;

二、封装

1.概念:用来隐藏属性内部的细节部分,对外提供访问的方法;

2.好处:

  • 可以提高代码的安全性;
  • 提高代码的可扩展性和维护性;

3.体现

  • 对属性进行封装:使用private进行修饰,使用priva进行修饰的属性,不能被其他类访问;

4.方法

  (1)提供两个对外访问的方法,可用来改变私有属性的变量值,解决不能被其他类访问的问题。

      set()-------->设置值,用于给成员变量进行赋值;

      get()--------->获取值,获取成员变量的值;

  (2)利用this关键字,可以避免方法参数名称与成员变量名称相同的时候,导致成员变量赋值失败。

      this----->表示当前对象的引用,即可以理解为就是当前对象;

      this.变量名-------->获取的是成员变量;

      this.方法()--------->获取的是成员方法;

5.案例

(1)提供public方法,给封装好的函数接口,用来修改封装类的属性。

 1 public class Test03 {
 2     public static void main(String[] args) {
 3         //实例化对象
 4         Student stu = new Student();
 5         //访问私有属性
 6 
 7         //给成员变量赋值
 8         stu.setName("张三");
 9         stu.setAge(50);
10         //取值
11         System.out.println(stu.getName());
12         System.out.println(stu.getAge());
13     }
14 }
15 
16 //student类 封装
17 class Student {
18     private String name;
19     private int age;
20 
21     //添加set(),get()方法
22     // 就是定义一个别的类可以访问本类私有属性的方法,该方法为public
23     //得到名字、年龄
24     public void setName(String n) {
25         name = n;
26     }
27     public String getName() {
28         return name;
29     }
30     //设置名字、年龄
31     public void setAge(int a) {
32         if(a < 0 || a > 120){
33             age = 60;
34         }else {
35             age = a;
36         }
37     }
38     public int getAge(){
39         return age;
40     }
41 
42 }

 (2)用this获取成员变量、成员方法

 1 public class Test03 {
 2     public static void main(String[] args) {
 3         //实例化对象
 4         Student stu = new Student();
 5         //访问私有属性
 6 
 7         //给成员变量赋值
 8         stu.setName("张三");
 9         stu.setAge(50);
10         //取值
11         System.out.println(stu.getName());
12         System.out.println(stu.getAge());
13     }
14 }
15 class Student {
16     private  String name;
17     private int age;
18 
19     //用this引用set(),get()方法
20     //同上,给本类写对外接口
21     public void setName(String name){
22         this.name=name;
23     }
24     public String getName(){
25         return name;
26     }
27     public void setAge(int age){
28         if (age < 0 || age > 120){
29             this.age=60;
30         }else {
31             this.age=age;
32         }
33     }
34     public int getAge(){
35         return age;
36     }
37 
38 }

 

标签:封装,变量,成员,age,局部变量,stu,Java,public,name
From: https://www.cnblogs.com/demon-/p/17084150.html

相关文章

  • Java使用Scanner实现循环输入
    1publicstaticvoidmain(String[]args){2Scannersc=newScanner(System.in);3List<Integer>list=newArrayList<>();4Stringinput=......
  • java day3 switch-case
      if-else则是不会处理后续语句。 ......
  • java 开启子线程的三种方式
    1.实现多线程的方式继承Thread类实现Runnable接口一般使用匿名的方式2.示例packagecomi.example.liy.mytestdemo;importorg.junit.Test;importstaticorg.ju......
  • Java对象和类
    在本节教程中,我们将学习Java对象和类。在面向对象编程技术中,需要设计和使用对象和类的程序。对象是物理和逻辑实体,而类是逻辑实体。  提醒:对于Java初学者来说,对象和类......
  • java的xml文件处理
    基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法)DOM:一次性将整个xml文件加......
  • Java基础整理
    JavaSE基础是Java学习中的基石,后续的学习基本都需要依靠这些基础内容,如果这一部分的内容掌握不牢固,就会导致后续学习内容的晦涩难懂。基于以上原因,加上自我感觉JavaSE......
  • C++ Day11 使用单例模式封装log4cpp
    一、实现log4cpp的封装,使其可以像printf一样使用,测试用例如下: 思路:使用可变模板参数,最终达到的效果是在使用 LogInfo、LogError、LogWarn、LogDebug时候可以传递任意类......
  • Java面向对象(OOP)概念
    在本节中,将了解面向对象(OOP)的基础知识。面向对象编程只是一个模式,它提供许多概念,如继承,数据绑定,多态等等。Simula是第一种面向对象的编程语言。而一切都可表示为对象的......
  • Java命名约定
    Java命名约定是一个规则,决定标识符使用什么命名规则,如类,包,变量,常量,方法等的命名规则。但是,它并不是强制要求必须遵循。这称为约定不规则。java编程语言的所有类,接口,包,方......
  • java 判断 class 类型
    1.instanceof。用来判断一个对象是否为一个类的实例。2. Class.isInstance3.  Class.isAssignableFrom。判断父类,参数为本身或者其子类。4. Class.isPrimitive。......