呵呵,其实是static这个字在作怪假如你去掉第一个程序中的static你也一样编译不过去而你在第二个程序中把变量和方法名都加上static的话你也可以编译过去protected的 保证 在当前类中,子类中,同一个包中的可以访问,而你现在出现的编译错误,是因为他们不在同一个包中,而为什么static的可以通过呢?static的变量和方法名对于同一个包这个概念就忽略了,因为static变量和方法名在内存中,只有一个存储区,所以当你申请一个变量名为static的值,你可以在包外访问它