1.对象的引用传递
类属于引用数据类型,引用数据类型就是指内存空间可以同时被多个栈内存引用。接下来通过一个案例为大家详细讲解对象的引用传递。
public class Student {
String name;
int age;
void read(){
System.out.println("大家好,我是"+name+"年龄"+age);
}
}
public class Example02 {
public static void main(String[] args) {
Student stu1=new Student();//声明stu1对象并实例化
Student stu2=null;//声明stu2对象,但不对其进行实例化
stu2=stu1;//stu1给stu2分配空间使用权
stu1.name="小明";//为stu1对象赋值
stu1.age=20;
stu2.age=50;
stu1.read();
stu2.read();
}
}
运行结果
上面代码内存分配图如下
stu1对象为stu2对象分配使用权,stu1和stu2指向同一内存。
通过stu2修改age属性的值。
注意
一个栈内存空间只能指向一个堆内存空间,如果想要再指向其它堆内存空间,就必须先断开已有的指向才能分配新的指向。
2.访问控制
针对类、成员方法和属性,Java提供了4种访问控制权限,分别是private、default、protected和public。
4种访问控制权限,具体介绍如下。(从小到大)
(1)private(当前类访问级别):private属于私有访问权限,用于修饰类的属性和方法。类的成员一旦使用了private关键字修饰,则该成员只能在本类中进行访问。
(2)default:如果一个类中的属性或方法没有任何的访问权限声明,则该属性或方法就是默认的访问权限,默认的访问权限可以被本包中的其它类访问,但是不能被其他包的类访问。
(3)protected:属于受保护的访问权限。一个类中的成员使用了protected访问权限,则只能被本包及不同包的子类访问。
(4)public:public属于公共访问权限。如果一个类中的成员使用了public访问权限,则该成员可以在所有类中被访问,不管是否在同一包中
访问范围 | private | default | protected | public |
同一类中 | ✔ | ✔ | ✔ | ✔ |
同一包中的类 | ✔ | ✔ | ✔ | |
不同包的子类 | ✔ | ✔ | ||
全局范围 | ✔ |