1、java访问权限修饰符(特殊情况除外)
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
2、C++中和JAVA中,public、private、projected的用法不完全一样。
C++中:
public修饰的成员变量或方法可以被任意其他的类访问。
private修饰的成员变量和方法,只能有类本身以及友元函数和友元类来访问。
projected修饰的成员变量和方法,能被类本身、继承本身的子类、友元函数以及友元类来访问。
默认情况下,在class关键字定义的类中,第一个作用域限定词(public、private、projected)出现之前的成员变量或方法都是private的。而在用struct关键字定义的类中,第一个限定词出现之前的成员变量和方法都是public的。两个作用域限定词之间的成员变量和方法都是被前一个限定词限制的。如
public: int a; int b; private double d;
以上例子中,int b;相当于public int b;
继承类(派生类)可以通过继承类对象(此处指访问自己内部的projected成员,不能访问其他继承类对象内的成员)访问基类中的projected成员,但是不可以通过基类对象访问基类中的projected成员。
不能通过类的实例(对象)访问类的projected成员。
友元关系时不可继承的。
private继承将基类中的所有成员都变成private。
projected继承将基类中的public成员变成projected,其他成员不变。
public继承保持基类中的限定条件不变。