编程语言
首页 > 编程语言> > java 封装性 引入传递

java 封装性 引入传递

作者:互联网

1.引用传递是java精髓,核心概念只有一点:一块堆内存空间(保存对象的属性和信息)可以同时被多个栈内存所共同指向,则每一个栈内存都可以修改同一块堆内存空间的属性值.

引用传递的核心只有一句话:“一块堆内存空间(保存对象的属性信息)可以被同时多个栈内存所共同指向,则每一个栈内存都可以修改同一块堆内存空间的属性值”.

1.1下面代码讲解
在这里插入图片描述
运行结果
首先实例化了一个person2对象,对对象name和age属性赋值,随后又声明了person3对象,这个对象指向person2对象的堆内存空间,所以person3和person2指向了同一个堆内存空间,这样person3对name属性的修改也一定影响到person2对象.
在这里插入图片描述
1.2.代码讲解
在这里插入图片描述
代码运行结果
本程序实例化了两个对象,分别为两个对象的属性赋值,而后将person1的堆内存传递给了person2,此时person2和person1将指向同一堆内存空间,当使用person2对象修改name属性的内容后,person1的内容也随之发生改变,
在这里插入图片描述

2.java封装性
下面代码讲解
加入了private关键字之后,发现Person类的外部将无法直接利用对象调用类中的属性,并且在编译就提示语法错误,在java开发中,如果要访问类的私有属性,需要按下形式定义操作方法.

setter(以"private String name"属性为列):public void setName(String n);
getter((以"private String name"属性为列)public void getName();

在这里插入图片描述

2.1代码讲解
在类属性中定义setter()、getter()操作方法目的是为了设置和取得属性的内容,也许某一个操作暂时不使用取得操作、但并不表示以后不会使用,所以必须全部提供,在以后定义类的时候,所有属性都要编写private封装,封装之后属性如果需要被外部操作,要编写setter()、getter()方法。

package lesson11;




class Person3{           //类名称首字母大写
    private  String name;   //属性封装
    private  int age;      //属性封装




    void setName(String n){  //setter:设置name属性内容
        name =n;
    }
    void setAge(int a){  //setter:设置age属性内容
        if(a>0 && a<250){   //增加检查
            age=a;
        }
    }

    public String getName() {  //getter:取得name属性内容
        return name;
    }

    public int getAge() {          //getter:取得age属性内容
        return age;
    }


    public  void  tell(){
        System.out.println("姓名:"+name+",年龄:"+age);
    }
}

public class TestDeamo13 {
    public static void main(String[] args) {
        Person3 person=new Person3();   //声明并实例化对象
        person.setName("芷若");
        person.setAge(18);     
        person.tell();
    }

}

运行结果
在这里插入图片描述

morning to afternoon 发布了18 篇原创文章 · 获赞 2 · 访问量 561 私信 关注

标签:封装,name,对象,内存空间,private,person2,引入,java,属性
来源: https://blog.csdn.net/ysy_1_2/article/details/104130504