java 访问控制符,
分享于 点击 6313 次 点评:51
java 访问控制符,
对于类: 默认的:可以在同一个包中的其它类中被访问,在同一个包中被其它的类所继承。 public:可以在任何一个包中的任何一个类中被访问和继承。 //-------------------------------------------------------------------------------------------------------------------- 一个类作为整体对程序的其它部分可见,并不能代表类内的所有的域和方法也对程序的其它部分可见,前者是后者的必要条件,类的域和方法能否为其它所有类访问(含继承),还要看这些域和方法自己的访问控制符。 //--------------------------------------------------------------------------------------------------------------------- 如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。 //--------------------------------------------------------------------------------------------------------------------- 处在不同包中的子类虽然可以访问父类中限定为protected的成员,但访问这些成员的对象必须具有子类的类型或者子类的子类的类型,而不能是父类类型。 //---------------------------------------------------------------------------------------------------------------------同一个类中 | 同一个包中 | 不同包中的子类 | 不同包中的非子类 | |
private | 允许 | |||
默认 | 允许 | 允许(子类和非子类) | ||
protected | 允许 | 允许(子类和非子类) | 允许(仅子类,且无法通过子类的实例访问子类继承的protected方法) | 无法访问protedted方法 |
public | 允许 | 允许(子类和非子类) | 允许 | 允许(子类和非子类) |
public class Country
{
protected String name;
protected void value()//friendly
{
name="China";
}
} //------------------------ package pkg2;
import pkg1.Country;
public class Main6
{
public static void main(String[]args)
{
Country c=new Country();
//c.value();//错误
}
}
//子类可以继承父类中访问权限设定为public,protedted和friedly(默认的)的
//域变量和方法,但是不能继承访问权限设定为private的域变量和方法
class City extends Country
{
void setValue()
{
this.value();//正确
super.value();//正确
Country c=new Country();
//c.value();//错误:即访问protected成员的对象类型不能是父类类型
City cc=new City();
cc.value();//正确
}
}
相关文章
- 暂无相关文章
用户点评