返回信息流在C++里面:
private:只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。
public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
明确提到了类的对象的访问权限。
而在Java中,我在网上搜了一下:
1、同一类中:private ,friendly ,protected , public 修饰可以访问;
2、同一包的类中friendly ,protected , public 修饰可以访问;
3、子类可以访问protected , public 修饰的父类;
4、public可以供所有类的访问。
基本都是上面描述的。
并没有对类的对象的访问权限进行说明?
我想问下,JAVA里面类的对象对其成员和函数的访问权限是怎么样的啊?
谢谢啦!
这是一条镜像帖。来源:北邮人论坛 / java / #19327同步于 2011/7/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问个访问控制的问题
watershed
2011/7/12镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这个问题,我真想不出用什么语言来表达
【 在 watershed (watershed) 的大作中提到: 】
: 在C++里面:
: private:只能由1.该类中的函数、2.其友元函数访问。
: 不能被任何其他访问,该类的对象也不能访问。
: ...................
【 在 watershed 的大作中提到: 】
: 在C++里面:
: private:只能由1.该类中的函数、2.其友元函数访问。
: 不能被任何其他访问,该类的对象也不能访问。
: ...................
这个表格我搜到过,我想描述的问题是:
在C++里,对类的成员或者函数,类和类的对象的访问权限是不同的
搜到的资料里面也都对类的对象的访问权限有明确说明
但是在JAVA里,搜到的资料如你所贴出的:类,同包的其他类,子类,既不同包也不是子类的其他类。没有提到类的对象的概念。
C++和java里面的这个不同让我很迷惑。
PS:在另外一个类里面要访问其他类的成员或者函数,是需要声明一个其他类的对象实例,然后通过这个对象去访问?那么,访问权限跟类还是类的对象无关?只跟声明这个对象的位置在什么地方有关?
。。。好吧,我也越来越觉得我问题的描述有问题。
总而言之,C++访问控制的资料里明确的提到了类的对象的概念,而且跟类体内时不同的,但是JAVA访问控制的资料里,我没有看到类的对象的描述。。。
【 在 ox 的大作中提到: 】
:
我只能说,一般而言,Java类的成员都会声明为私有的,但是提供get/set方法来访问
【 在 watershed (watershed) 的大作中提到: 】
: 这个表格我搜到过,我想描述的问题是:
: 在C++里,对类的成员或者函数,类和类的对象的访问权限是不同的
: 搜到的资料里面也都对类的对象的访问权限有明确说明
: ...................
还是没太看明白你的意思
非静态成员通过实例化对象来访问
静态成员通过类名访问
访问权限控制两者的方式是一样的,通过关键字private,protected,public,默认分成四种
【 在 watershed (watershed) 的大作中提到: 】
: 这个表格我搜到过,我想描述的问题是:
: 在C++里,对类的成员或者函数,类和类的对象的访问权限是不同的
: 搜到的资料里面也都对类的对象的访问权限有明确说明
: ...................
PS: 个人建议,学java的话,不要总被C++的思维局限,并试图使用C++的设计理念来理解Java的设计,虽然都是面向对象的语言,但是两者还是有很大不同的
【 在 watershed (watershed) 的大作中提到: 】
: 这个表格我搜到过,我想描述的问题是:
: 在C++里,对类的成员或者函数,类和类的对象的访问权限是不同的
: 搜到的资料里面也都对类的对象的访问权限有明确说明
: ...................
c++一窍不通的飘过
【 在 ox (小贝) 的大作中提到: 】
: PS: 个人建议,学java的话,不要总被C++的思维局限,并试图使用C++的设计理念来理解Java的设计,虽然都是面向对象的语言,但是两者还是有很大不同的
我举个例子吧:C++里面
protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。
class A
{
protected:
int a;
void seta(int n)
{
a = n; //正确
}
};
A temp;
temp.a = 0; //错误,无法访问
类和类的对象对其成员或者函数的访问权限是不同的,并且资料里面有明确的说明,明确地提到类的对象的情况。
但是JAVA我看到的资料讲到访问控制时,几乎没有提到过类的对象的概念。
【 在 ox 的大作中提到: 】
: 还是没太看明白你的意思
: 非静态成员通过实例化对象来访问
: 静态成员通过类名访问
: ...................