5个回答
推荐于2018-03-02 · 知道合伙人软件行家
关注
展开全部
1、在类中声明private的变量
2、给出get,set方法
3、在其他类中实例化1中的类,然后通过类的对象来点出成员变量,例如:
public class User{
private String name;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
public class Test{
public static void main(String[] args)
{
User user = new User();
user.setName("张三");
System.out.println(user.getName());
}
}
展开全部
有两类方法。
一是使用返回值类型和这个类型相同或为这个类型的引用类型(多用于结构体或类,如对于成员struct T a,这里返回值类型可以是T或者const T&或者T&,看使用需要选择)成员函数,函数体中直接这个private成员变量。
代码如LS CNnumen911 ,不过int getA()后面分号漏了,而且返回值类型明显有问题(- -)……
class A{
private:
int a;
public:
int getA();
};
int A::getA()
{
return a;
}
以上是间接引用。如果需要直接无视private引用,只能在这个成员变量所在类的内部,或者使用友元函数/友元类。
如:
class A{
private:
int a;
public:
friend class B;
friend void func(class A&);
int getA()
};
void A::getA()
{
return a;
}
//因为在类内部只是声明,还需要实现类B和函数func的定义(不需要加friend关键字),这里从略。
这样在类B和函数function的定义中就可以直接访问类A的任何private或protected成员(当然仍然保持访问public成员的能力)。
====
[原创回答团]
一是使用返回值类型和这个类型相同或为这个类型的引用类型(多用于结构体或类,如对于成员struct T a,这里返回值类型可以是T或者const T&或者T&,看使用需要选择)成员函数,函数体中直接这个private成员变量。
代码如LS CNnumen911 ,不过int getA()后面分号漏了,而且返回值类型明显有问题(- -)……
class A{
private:
int a;
public:
int getA();
};
int A::getA()
{
return a;
}
以上是间接引用。如果需要直接无视private引用,只能在这个成员变量所在类的内部,或者使用友元函数/友元类。
如:
class A{
private:
int a;
public:
friend class B;
friend void func(class A&);
int getA()
};
void A::getA()
{
return a;
}
//因为在类内部只是声明,还需要实现类B和函数func的定义(不需要加friend关键字),这里从略。
这样在类B和函数function的定义中就可以直接访问类A的任何private或protected成员(当然仍然保持访问public成员的能力)。
====
[原创回答团]
参考资料: 原创
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写个类成员函数拜:
class A{
private:
int a;
public:
int getA()
};
void A::getA()
{
return a;
}
想用a的地方调用getA就行了...
class A{
private:
int a;
public:
int getA()
};
void A::getA()
{
return a;
}
想用a的地方调用getA就行了...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用成员函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有时候为了安全,需要把把类的属性定义为private。但是,但是我们有时候却需要去操作这些私有成员变量,如果直接访问是会报错的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来为私有成员变量赋值和获取值,以及检查属性的“__isset()”和删除属性的方法“__unset()”。
在PHP5中给提供了专门为私有成员变量设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
//__get()方法用来获取私有属性
private function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
$this->$property_name = $value;
}
有了这2个方法以后,就可以直接执行:
echo $instance->$property
或 $instance->$property = “a”;
来获取和修改private变量的值了,如果没有手动添加__get();和__set();方法则会报错,因为是要访问的是私有变量。
在PHP5中给提供了专门为私有成员变量设置值和获取值的方法,“__set()”和“__get()”这两个方法,这两个方法不是默认存在的,而是我们手工添加到类里面去的,像构造方法(__construct())一样, 类里面添加了才会存在,可以按下面的方式来添加这两个方法,当然也可以按个人的风格来添加:
//__get()方法用来获取私有属性
private function __get($property_name)
{
if(isset($this->$property_name))
{
return($this->$property_name);
}else
{
return(NULL);
}
}
//__set()方法用来设置私有属性
private function __set($property_name, $value)
{
$this->$property_name = $value;
}
有了这2个方法以后,就可以直接执行:
echo $instance->$property
或 $instance->$property = “a”;
来获取和修改private变量的值了,如果没有手动添加__get();和__set();方法则会报错,因为是要访问的是私有变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询