栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我们不应该在Java中使用受保护的静态

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我们不应该在Java中使用受保护的静态

这是一个风格上的问题,而不是直接的问题。这表明您没有正确考虑班上正在发生的事情。

考虑一下什么

static
意思:

此变量存在于类级别,在每个实例 中并不单独存在,并且在扩展me的类中没有独立存在

考虑一下什么

protected
意思:

该变量可以在此类,同一包中的 类以及扩展我的 类中看到。

这两种含义并不完全互斥,但非常接近。

我唯一可以看到的是可以将两者一起使用的情况是,如果您有一个设计成可扩展的抽象类,然后扩展类可以使用原始对象中定义的常量来修改行为。这种安排很可能最终会变得非常混乱,并且表明类的设计存在缺陷。

在大多数情况下,最好将常量设为public,因为这样会使所有内容更清洁,并使子类的子类具有更大的灵活性。在很多情况下,组合比继承要好得多,而抽象类则强制继承。

要查看一个示例,说明如何破坏事物,并说明变量没有独立存在的含义,请尝试以下示例代码:

public class Program {    public static void main (String[] args) throws java.lang.Exception {        System.out.println(new Test2().getTest());        Test.test = "changed";        System.out.println(new Test2().getTest());    }}abstract class Test {    protected static String test = "test";}class Test2 extends Test {    public String getTest() {        return test;    }}

您将看到结果:

testchanged

自己尝试一下:https://ideone.com/KM8u8O

Test2
是能够访问静态成员
test
Test
无需限定名称-但它没有继承或让自己的副本。它正在查看内存中完全相同的对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号