Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OOP-谁可以访问公共、私有和受保护变量?_Java_Oop_Pseudocode - Fatal编程技术网

Java OOP-谁可以访问公共、私有和受保护变量?

Java OOP-谁可以访问公共、私有和受保护变量?,java,oop,pseudocode,Java,Oop,Pseudocode,我是新手。请看以下伪代码: Class Test{ public String a; protected String b; private String c; public void aa(){} protected void bb(){} private void cc(){} Class Test2{ private void dd(){} } } Class Test3 extends Test{ private void

我是新手。请看以下伪代码:

Class Test{
   public String a;
   protected String b;
   private String c;
   public void aa(){}
   protected void bb(){}
   private void cc(){}
   Class Test2{
      private void dd(){}
   }
}
Class Test3 extends Test{
   private void ee(){}
}
Class Test4{
   private void ff(){}
}
可以
a
b
c
访问
aa()
bb()
cc()
a
b
c
能否访问类
Test2
dd()
?只有
a
b
可以访问类
Test3
ee()
?只有
a
才能访问类
Test4
ff()

  • 私有-仅受保护的类

  • 保护那些继承人

  • 世界公众

    • 关于第一个问题
      “aa()能否访问类测试的a、b、c”:是的,它可以访问其外部类的成员。Test2是一个内部类,内部类与其封闭类的实例相关联,并且可以直接访问该对象的方法和字段

      关于第二个问题
      “确实,只有a和b可以访问类Test3”:是的,a和b可以在类Test3内访问。子类可以访问其基类的公共和受保护成员

      对于第三个

      “只有a才能访问类Test4是真的吗?”:是的,如果您创建类Test的对象并使用点(.)运算符访问它,则在类Test4内部只能访问“a”。

      您所说的在java中称为访问修饰符。您提到了其中三种,但总共有4种访问修饰符:

    • 私有-除了他们所居住的阶级成员之外,他们对任何人都不可见
    • 受保护-私有+子类也可见
    • 默认值-private+同一包中的其他类
    • 公共-整个宇宙都可见

    • 这些关键字的精确语义的可能重复是特定于语言的。并不是所有的OOP语言都有这些概念,也不是所有的实现都执行规范的每一项要求。把C++变成C++ C++问题(或者你需要的语言)是有意义的。C++和java有这些概念,我会添加标签。@ Bob警告:java有“包私有”(没有说明符),C++没有。