关于c++与java在面向对象方面的一些不同的疑问

wabcw 2004-03-25 11:12:21
我写java程序的时候比较少的考虑类的修饰符,最近发觉好像在java里面只有public这个修饰符,而没有象在c++里有的private和protected修饰符。

另外,对于类的成员的修饰符java以上三个都有,在继承之后,子类对父类的成员访问又有什么规则,总之,我的头脑很乱,望大侠比较系统的指正,有详细讲解这方面的资料更好!!
...全文
32 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
vongood 2004-03-26
  • 打赏
  • 举报
回复
gz
SarkSharah 2004-03-26
  • 打赏
  • 举报
回复
我初学Java,以前学过一些C++,我最近在作C++与Java这间的比较,并把不同之处记录下来,写成心得。如果各位有兴趣一起学习,发邮件给我,我的心得双手奉上,并诚邀一同完成。sark_sharah@sina.com
如下是我作的关于继承权限的比较:

C++中,继承有三种方式:
1 公有继承:
class NewClass : public OldClass
对于派生类:基类的公有成员和保护成员可见,基类的私有成员在派生类中不可见;
对于派生类对象:基类的公有成员可见,基类的其他成员不可见。
2 私有继承:
class NewClass : private OldClass
对于派生类:基类的公有成员和保护成员可见,基类的私有成员不可见;
对于派生类对象:基类的所有成员不可见。
3 保护继承:
class NewClass:private OldClass
对于派生类:基类的公有成员和保护成员可见,基类的私有成员不可见;
对于派生类对象:基类的所有成员不可见。

保护继承就是把基类作为一个保护的成员放进派生类里,在派生类里,基类相当于public 型,其开放的部分是可以访问的。对派生类来说,被保护的成员在其对象中是不可访问的,所以派生类的对象中,基类的一切成员都不可访问。

当不明确表示是什么方式时,缺省的继承方式是private,但可以把基类中的公有成员或保护成员说明为派生类的公有成员供派生类的对象调用。

#include <iostream.h>;

class A {
public:
void f() {
cout << "A::f()" << endl;
}
};

class B: A {
public:
A::f;
};

void main () {
B b;
b.f();
}


Java中,继承只有一种方式:
Class NewClass extends OldClass
派生类可以访问基类的公有成员和保护成员,不可访问私有成员;
派生类的对象可以访问基类对象的公有成员和保护成员,不可访问私有成员。
Java的继承相当于C++中的公有继承
muymuy 2004-03-25
  • 打赏
  • 举报
回复
java中的继承方式只有一种:public,与c++的public继承相同。
muymuy 2004-03-25
  • 打赏
  • 举报
回复
java中类的访问级别修饰符有3种:public、default(无修饰符)、private
public:表示任何地方都可以访问该类;
default:同一个package下所有类都可以访问该类;
private:这个修饰符只能用于内嵌类,只能被包容它的类访问;

c++在这方面与java有点区别,除了内嵌类之外,c++的类没有访问级别修饰符,内嵌类的的访问修饰符其实与成员的修饰符一样;

c++中继承方式有4中:public、protected、default(无修饰符)、private
public继承:子类可访问父类的public和protected成员,子类的子类也可以;外部类也可以访问父类的pubic成员;
protected继承:子类可访问父类的public和protected成员,子类的子类也可以;但外部类不能访问父类的任何成员;
private继承:子类可访问父类的public和protected成员,子类的子类不可以,外部类也不可以;
default继承:同private;

还有一种virtual继承,与访问级别无关,我不太清楚,请高手指点。
programer23 2004-03-25
  • 打赏
  • 举报
回复
java中的访问级别为
public : 所有人都可以访问它。
friendly : 只有同包的才可以用。
protected : 只有继承的子类才可以访问。
private : 谁都不可以访问,只能自己用。
Percy_ButtonS 2004-03-25
  • 打赏
  • 举报
回复
public private protected java都有的
什么都不加是默认package级的访问级别.
xhan2000 2004-03-25
  • 打赏
  • 举报
回复
public
protected

private
java都有
nkwj 2004-03-25
  • 打赏
  • 举报
回复
你还是找本书看一下吧

C程序员学Java会很快,但一点书也不看还是不行的
xiaokui1120 2004-03-25
  • 打赏
  • 举报
回复
关于java的限定访问权限的修饰符
public:所有的类均可访问,但其他包中的类访问时要import
缺省:只有同一个包中的类可访问
private:只有该类本身可访问,级别最高
protected:同一包中的类或其他包中的子类可访问
private protected:只有子类可访问
RAYLI 2004-03-25
  • 打赏
  • 举报
回复
和 c++ 的阿public 和 private是一样的
zeros 2004-03-25
  • 打赏
  • 举报
回复
java中这public,protected,private种类型是有的,不过类好象不能定义成protected,private类型。
Iforgot 2004-03-25
  • 打赏
  • 举报
回复
继承的规则是子类应该更具体,所以,不允许削弱原有函数的访问权限。

就是说,不能把super类的public函数,重载为private的。但,反过来可以。

总之,不能降低。
Iforgot 2004-03-25
  • 打赏
  • 举报
回复
都有。 private必须是内部类时才可用。

外部类如果时private的,别人没法访问了。 所以,编译器不允许通过。


方法、成员和C++一样,只是写法有点差异。

这3个修饰符的含义,到处都有介绍。
lostyq 2004-03-25
  • 打赏
  • 举报
回复
Java_core说的比较清楚,可以看一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧