我最近写了这样的代码:
('x', 'x', 'x', 'x')
[('x', 'x', 'x', 'x'), ('y', 'y', 'y', 'y'), ('z', 'z', 'z', 'z'), ('i', 'i', 'i', 'i'), ('j', 'j', 'j', 'j'), ('k', 'k', 'k', 'k')]
无法编译注释代码。我一直认为参数可以是class Test{
public int a;
public int b;
public void demo(){
//public int c;
final int d;
}
}
,如public
,但为什么不b
?
答案 0 :(得分:4)
public int c
是一个错误,因为局部变量仅对声明它们的方法可见,因此访问修饰符没有意义。
对于final int b
,我没有注意到你为它分配了0。应该没问题。问题可能是你有两个名为b
的变量(假设注释行没有替换未注释的b
声明)。
答案 1 :(得分:2)
public
等可见性修饰符描述了是否可以从其他类型访问某些元素或类型。它们可以应用于
将访问修饰符与c
等局部变量一起使用是没有意义的,因为局部变量只能在本地范围内看到(在{...}
范围内它们声明 - 在demo
方法中的情况下),因此您无法限制或增加该可见范围。
答案 2 :(得分:1)
结合变量public显示类中此特定变量的访问级别。 SO about public-private-protected
你试图在一个方法中定义一个变量public,这会抛出一个错误,因为这个变量只能在这个方法中本地访问,所以不会有任何有用的含义。
由于类变量的缺失而产生了另一个错误,这在使用关键字final时是必需的。
答案 3 :(得分:1)
只有类变量可以具有私有或公共访问修饰符。所以你不能在demo()方法中有最终变量。
对于final int b = 0,您已经定义了它。
答案 4 :(得分:0)
这里有一个OOP的基本概念之一就是Encapsulation。
封装是一种将类中的字段设为私有并通过公共方法提供对字段的访问的技术。如果一个字段被声明为私有,那么该类之外的任何人都无法访问它,从而将字段隐藏在它的范围内
封装可以被描述为一种保护屏障,可以防止代码和数据被类外定义的其他代码随机访问。
如果你的代码你说,参数可以是公开的,比如b,但为什么不是c。这是因为范围c仅适用于方法demo(),并且只能在其中访问。同样适用于final。