A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一个类怎样访问另一个类的private的变量

6 个回复

倒序浏览
可以在变量所在的类中定义get和set方法,来访问private变量,例如:
class Test8
{
    public static void main(String[] args)
    {
        //定义对象
        Student result=new Student("张三",22,95);
        //获取get()方法
        result.get();
        //调用set()方法,并输出结果
        Student result1=new Student();
        result1.set("李二",33,99);
        result1.get();
    }
}
class Student
{
    //定义变量
    private String name;
    private int age;
    private float score;
    //构造函数
    Student(String name, int age, float score)
    {
        this.name = name;
        this.age = age;
        this.score = score;
    }
    Student()
    {}
    //set方法函数
    public void set(String name1,int age1,float score1)
    {
        this.name=name1;
        this.age=age1;
        this.score=score1;
    }
    //get方法函数
    public void get()
    {
        System.out.println(this.name);
        System.out.println(this.age);
        System.out.println(this.score);
    }
}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 赞一个!

查看全部评分

回复 使用道具 举报
通过在有private类中写方法,间接赋值和取值,就可以帮我们实现!一般按习惯,写get和set方法!
直接看例子:
package wzq.j2se.claz;

public class PrivateDemo {


public static void main(String[] args) {
  PM pm = new PM();
  //int age = pm.age;//注意这儿,这样写肯定编译不通过的!
  pm.setAge(10);
  int age = pm.getAge();
  System.out.println("age=="+age);
}

}
class PM{
private int age;
private String name;
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
}
}

这说明了,private修饰的变量,确实不能在其它类中直接访问的!但是,在本例中,PM类的两个方法都没有private,所以,我们用其它类调用它,是合情合理的。
而这两个方法本身就是PM类的,在本类中访问private属性,是不受限制的。所以,就这样实现了对private变量的间接赋值和取值!
回复 使用道具 举报
反射,暴力访问

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 这是除了getter和setter之外的一种方式.

查看全部评分

回复 使用道具 举报
封裝繼承搞定!!!
回复 使用道具 举报
如果该类中有对外提供共有的访问方法来获取这个私有的属性,那就直接用这个方法就可以了。如果没有,那就用反射机制,暴力反射。知识有限,我就知道这么多。:lol:lol
回复 使用道具 举报

暴力访问,我喜欢:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马