Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 我们可以采用私有方法吗?最终方法是一样的_Java_Private_Final - Fatal编程技术网

Java 我们可以采用私有方法吗?最终方法是一样的

Java 我们可以采用私有方法吗?最终方法是一样的,java,private,final,Java,Private,Final,据我所知,私有方法和final方法是相同的。Java编译器在编译时确定私有方法的含义。私有方法和最终方法都不能在运行时修改,也不能重写。这些相似性使得私有方法和最终方法看起来是一样的。这是真的吗?考虑以下示例: class Super { private void foo(){} final void bar(){} } class Sub extends Super { private void foo(){} final void bar(){}

据我所知,私有方法和final方法是相同的。Java编译器在编译时确定私有方法的含义。私有方法和最终方法都不能在运行时修改,也不能重写。这些相似性使得私有方法和最终方法看起来是一样的。这是真的吗?

考虑以下示例:

class Super {

    private void foo(){}

    final void bar(){}

}

class Sub extends Super {

    private void foo(){}

    final void bar(){}

}
使用
foo()
方法不会有问题,但在尝试编译
bar()
方法时会遇到编译问题。这是因为无法重写
bar()
方法,但是
foo()
方法就是不可见,因此不会发生重写


您可以在这里看到更多的答案:

私有方法自动为final,并对其派生类隐藏。最终类不会对其派生类隐藏。因此,您可以创建一个与私有方法同名的新类,例如

class test {
    private void works {
    }
}
class tester extends test {
    private void works {
    }
}
但不能创建与最终方法同名的新类

/*----------Doesn't Work------------*/
class test {
    final void dWorks {
    }
}
class tester extends test {
    final void dWorks {
    }
}

示例和答案如下:

停止投票..请。。请断定两者是否相同。不,它们不一样。我提供的链接提供了一个具体的例子来解释。如果措辞更清楚,这可能是一个更好的问题。你的意思是,“私有方法都是最终的吗?”