请说明什么是可见性?简述可见性分类。列举两个理由,说明全局可见性不只通过公有类的静态方法实现,而通过单实例类的实例方法实现。
时间: 2024-06-01 14:09:17 浏览: 17
可见性是指在一个程序中,是否能够访问一个变量或者对象的属性或者方法。一般来说,一个变量或者对象有局部可见性、包可见性和全局可见性三种。
局部可见性是指一个变量或者对象只能在作用域内被访问,超出作用域就无法访问。
包可见性是指一个变量或者对象只能在同一个包内部被访问,其它包无法访问。
全局可见性是指一个变量或者对象可以被任何包内的代码访问。
全局可见性不仅可以通过公有类的静态方法实现,还可以通过单实例类的实例方法实现。例如,单例模式中,由于单实例对象是唯一的,所以可以将其实例方法设置为public,其它包的代码只要获取到单实例对象的引用,就可以通过实例方法进行操作。另外,有些情况下,公有类的静态方法不方便调用,此时也可以通过单实例类的实例方法实现全局可见性。
两个理由如下:
1. 单实例类的实例方法可以更方便地访问和操作单例对象的属性和方法,而不需要创建新的对象;
2. 单实例类的实例方法可以更好地控制对象的访问权限,将需要被全局访问的属性和方法放在实例方法中,将不需要被外部访问的属性和方法设置为private,从而实现全局可见性。
相关问题
什么叫做可见性?可见性的一般规则是什么?
可见性是指一个变量是否可以被其他线程访问。在多线程编程中,为保证线程的正确性和数据的一致性,需要定义一些规则来控制变量的可见性。一般规则是,当一个线程修改了某个变量的值后,必须把这个更新的值刷新到主内存中,其他线程才能看到这个最新的值。而当其他线程需要访问这个变量时,也必须从主内存中获取最新的值。这些规则可以通过使用同步机制来实现。但具体的实现方式则取决于编程语言和开发环境。
Java中如果一个public 类的protected方法的可见性是
在Java中,如果一个类被声明为`public`,那么该类中的`protected`方法的可见性是有限制的。
`protected`访问修饰符在Java中具有以下可见性规则:
1. 在同一个包中的其他类可以访问`protected`方法。
2. 子类(无论是否在同一个包中)可以访问父类中的`protected`方法。
3. 不在同一个包中且非子类的类不能直接访问该类中的`protected`方法。
请注意,`protected`修饰符提供了一种限制访问的方式,使得只有相关的类和子类能够访问被修饰为`protected`的方法。而对于被声明为`public`的类,其方法默认具有`public`可见性,可以被任何类访问。
总结起来,对于一个`public`类中的`protected`方法,只有在同一个包中的其他类和子类才能够直接访问该方法。
相关推荐
![avi](https://img-home.csdnimg.cn/images/20210720083319.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)