关于面向对象中继承机制的一个问题。java/c#/c++。题目如图所示。谢谢
看42和43。书上给的答案是C和B。有点疑惑,P和Q都继承自O,那么O中的公有的F2和受保护的F3应该都可以访问呀。为什么会有答案中描述的限制呢?还是C++/java/C...
看42和43。书上给的答案是C和B。有点疑惑,P和Q都继承自O,那么O中的公有的F2和受保护的F3应该都可以访问呀。为什么会有答案中描述的限制呢?
还是C++/java/C#中关于继承的权限方面有区别?
谢谢 展开
还是C++/java/C#中关于继承的权限方面有区别?
谢谢 展开
2个回答
展开全部
C++/java/C#中关于继承的权限没有区别,你其实理解了
只是注意说法:在P内能访问,和P的对象能访问,如果一个方法在P内是私有的,在P内是能访问的,P的对象是不能访问的,所以42选c
class A
{
public:
int x;
protected:
int y;
private:
int z;
};
class B : public A
{
// x is public
// y is protected
// z is not accessible from B
};
class C : protected A
{
// x is protected
// y is protected
// z is not accessible from C
};
class D : private A
{
// x is private
// y is private
// z is not accessible from D
};
只是注意说法:在P内能访问,和P的对象能访问,如果一个方法在P内是私有的,在P内是能访问的,P的对象是不能访问的,所以42选c
class A
{
public:
int x;
protected:
int y;
private:
int z;
};
class B : public A
{
// x is public
// y is protected
// z is not accessible from B
};
class C : protected A
{
// x is protected
// y is protected
// z is not accessible from C
};
class D : private A
{
// x is private
// y is private
// z is not accessible from D
};
展开全部
自己写3个类把这种描述实现一遍,帮助理解
类内定义权限和继承权限,自己看看书上的权限表格
注意题目中"对象"和"类内"这2个词,理解问题的关键
虽然没认真学过3种语言,但是这方面的权限似乎没区别,只是写法有变化
对象调用func3 O o; o.func3();这个是对应的具体对象o
类内调用func2 O::func3(){func2()};这个func2却是在实现中调用(类内调用),和题目中的对象调用有区别的
类内可以调用私有,但是对象却不可以调用私有
仔细对照下protect继承引起的变化,编写程序用程序验证自己的想法
类内定义权限和继承权限,自己看看书上的权限表格
注意题目中"对象"和"类内"这2个词,理解问题的关键
虽然没认真学过3种语言,但是这方面的权限似乎没区别,只是写法有变化
对象调用func3 O o; o.func3();这个是对应的具体对象o
类内调用func2 O::func3(){func2()};这个func2却是在实现中调用(类内调用),和题目中的对象调用有区别的
类内可以调用私有,但是对象却不可以调用私有
仔细对照下protect继承引起的变化,编写程序用程序验证自己的想法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询