/// in java:
class Test
{
protected void prt()
 {
 System.out.println("HelloWorld");
 }
}
public class ProtectedTest {
  
public static void main(String[]args)
{
Test t=new Test();
t.prt();
}
}
t为什么能够访问prt(),虽然我也知道protected是包内可见的,可是我搞不清楚包内可见究竟是什么意思
////in c++:
#include"iostream.h"
class CDate
{
protected:
void prt()
{
cout<<"Hello"<<endl;
}
};
void main()
{
  CDate date;
  date.prt();
}
这个就是错的,因为它是protected,那位解释一下这种情况

解决方案 »

  1.   

    JAVA中同一个包中各个类的非私有有成员都是可以访问得到的
    C++中则没有包的概念,它解决的命名冲突命名空间啊。
      

  2.   

    java默认的访问机制是“包内可见”。其他的关键字“public,protected,private”都和c++
    一样
      

  3.   

    包内可见就是class文件在同一个包下是可见的
    第一个java程序两个class放在一个java文件里,显然在同一个包下
    假如放在两个文件里,只要package是一样的,同样是在同一个包内的
    楼主可以到放class文件的文件夹下看看,这两个类是在同一个文件夹下的
      

  4.   

    作用域public,private,protected,以及不写时的区别 
    答:区别如下: 
    作用域    当前类 同一package 子孙类 其他package 
    public    √     √ √ √ 
    protected √ √ √ × 
    friendly   √ √ × × 
    private    √ × × × 
    不写时默认为friendly 
      

  5.   

    作用域public,private,protected,以及不写时的区别 
    答:区别如下: 
    作用域    当前类 同一package   子孙类 其他package 
    public    √     √            √      √ 
    protected √     √            √      × 
    friendly   √    √            ×      × 
    private    √    ×            ×      × 
    不写时默认为friendly 
    protected 在声明的*.java 文件夹中(包内),可以使用!
    在声明的*.java 以外的文件夹中(包内)是不可见的,是受保护的