Java 使用公共和最终

Java 使用公共和最终,java,Java,我最近编写了如下代码: class Test{ public int a; public int b; public void demo(){ //public int c; final int d; } } 无法编译已注释的代码。我一直认为参数可以是public,就像b,但是为什么不c?public int c是一个错误,因为局部变量只对声明它们的方法可见,所以访问修饰符没有意义 至于final int b,我没有注意到您将0分配给它。应该没问题。问题可能是您

我最近编写了如下代码:

class Test{
  public int a;
  public int b;
  public void demo(){
    //public int c;
    final int d;
  }
}

无法编译已注释的代码。我一直认为参数可以是
public
,就像
b
,但是为什么不
c

public int c
是一个错误,因为局部变量只对声明它们的方法可见,所以访问修饰符没有意义


至于
final int b
,我没有注意到您将0分配给它。应该没问题。问题可能是您有两个名为
b
的变量(假设注释行不替换未注释的
b
声明)。

与变量public结合使用,显示类中此特定变量的访问级别

如果您试图在一个方法中定义一个public变量,这将抛出一个错误,因为这个变量只能在这个方法中本地访问,因此这个变量没有任何有用的意义


另一个错误是由于类变量的删除丢失而产生的,这是使用关键字final时需要的。

只有类变量可以有访问修饰符,如private或public。所以在demo()方法中不能有final变量


对于final int b=0,您已经定义了它。

可见性修饰符,如
public
描述是否可以从其他类型访问某些元素或类型。它们可以应用于

  • 类型(类、接口、枚举)
  • 类型的顶级元素,如
    • 田野
    • 方法,
    • 建设者,
    • 内部类型

将access修饰符与局部变量(如
c
)一起使用是没有意义的,因为局部变量只能在局部范围内看到(在
{…}
范围内声明它们-在您的示例中,在
demo
方法中),因此,您不能限制或增加可见性范围。

在这里,OOP的四个基本概念之一是封装

封装是使类中的字段私有并通过公共方法提供对字段的访问的技术。如果一个字段被声明为private,那么类外的任何人都无法访问它,从而将字段隐藏在它的scop中

封装可以被描述为一种保护屏障,防止类外定义的其他代码随机访问代码和数据


对于您所说的代码,参数可以是公共的,比如b,但为什么不是c。这是因为c的作用域仅用于方法demo(),并且只能在其中访问。同样适用于final。

@Shonminh我毫不怀疑
final int b=0
不会编译,因为它有正确的语法。也许还有其他的错误,谢谢你的评论。我一定看到了什么(或者没有看到什么)。现在已修复。@Kevin Esche我发现我已重新定义了
b
,现在已更正。谢谢。我想你们大多数人说的都是对的,但是
final
可以在方法内部声明。是的,你可以将final声明为其他字段,并且同样适用于它,只是不管创建多少对象,final都只有一个副本。