是否应使用或不使用public访问修饰符声明Java接口中的方法?
当然,技术上没关系.实现a的类方法interface总是如此public.但什么是更好的惯例?
Java本身并不一致.例如,参见Collectionvs. Comparable或Futurevs ScriptEngine..
internal class Foo
{
public void Fee()
{
Debug.WriteLine("Fee");
}
internal void Fi()
{
Debug.WriteLine("Fi");
}
}
Run Code Online (Sandbox Code Playgroud)
我认为Fee()和Fi()同样可以访问,因为整个类已经是内部的.我忽略了什么吗?在这样的情况下,有没有理由选择公共或内部方法?
新的intellij升级(10.5)现在显示一个警告,即没有使用为类定义的某些方法.这些方法是公开的,我计划不使用所有这些方法,因为我已创建它们以支持预期的API.我想禁用此警告(不用于类中的公共方法).有办法吗?
关于PHP函数声明关键字一个小点:如果你有一类方法是静态的,应在static关键字的知名度关键字之前或之后都(public,protected,private)?假设您的所有方法(静态或其他方法)都有可见性关键字,那么您希望visibility关键字与关键字保持在同一位置function:
public function foo() {}
public function bar() {}
protected function baz() {}
private function quux() {}
Run Code Online (Sandbox Code Playgroud)
现在假装一对夫妇是静态的:
public function foo() {}
static public function bar() {}
protected function baz() {}
static private function quux() {}
Run Code Online (Sandbox Code Playgroud)
此外,如果某个方法是静态的,那么您希望这是第一个看到的方法,因为这对于它甚至是可见性关键字所做的方法有更多的影响.
这严格来说是一个可读性问题,因为它显然没有功能或设计后果.(我能想到的.)
将方法标记为public包私有类是否有所不同?
class SomePackagePrivateClass
{
void foo(); // package private method
public void bar(); // public method
}
Run Code Online (Sandbox Code Playgroud)
这之间foo和bar这里的可见度是否存在实际差异?
我正在学习Ruby,并且已经达到了令我感到困惑的程度.
我使用的这本书是在谈论private,public和protected methods,但我还是有点困惑.每个之间有什么区别?
给定任何对象我可以调用#public_methods并查看它将响应的所有方法.但是,我发现有时候获得一个没有继承的所有公共方法的快速列表是有用的,也就是那些真正属于这个类的东西.
我找到了" 简单的方法列出Ruby对象的公共方法 ",如果我使用:
(Foo.public_methods - Object.public_methods).sort
Run Code Online (Sandbox Code Playgroud)
我可以过滤掉很多基本的Ruby东西.我希望能够过滤掉链条上一直延续的所有内容.如果我知道父类我可以使用它进行过滤,但我想提出一个通用命令,它可以返回任何对象的未公开公共方法的数组.
当我实现一个interface方法时,我不得不把它变成一个public方法.
我们可能会default遇到我们想要使用的情况(如同在相同包中访问的情况)或protected.
有人可以解释这个限制背后的原因吗?
如果创建一个JQuery的微件(下文代码示例)中,然后定义一个"公共"的方法,是有任何其他方式来调用比使用以下形式的其它方法?
$("#list").list("publicMethod");
Run Code Online (Sandbox Code Playgroud)
我想创建一系列小部件,它们都定义相同的方法(基本上实现相同的接口),并且能够在不知道我当前正在调用该方法的哪个小部件的情况下调用该方法.在当前表单中,我需要知道我正在"list"小部件上执行该方法.
下面是使用"public"方法创建窗口小部件的示例.
(function($) {
var items = [];
var itemFocusIdx = 0;
$.widget("ui.list", {
// Standard stuff
options : { ... },
_create : function() { ... },
destroy : function() { ... },
// My Public Methods
publicMethod : function() { ... }
...
});
}(jQuery));
Run Code Online (Sandbox Code Playgroud) 我正在考试这StringTokenizer.java门课,脑海里浮现出几个问题.
我注意到其他类使用的公共方法调用了一些完成所有工作的私有方法.现在,我知道OOD的原则之一就是尽可能多地私有化并隐藏所有实现细节.我不确定我是否完全理解这背后的逻辑.
我理解,将字段设为私有以防止将无效值存储在其中非常重要(这只是众多原因之一).然而,当谈到私人方法时,我不确定它们为何如此重要.
例如,在StringTokenizer类的情况下,我们不能只将所有实现代码放在公共方法中吗?它如何对使用这些方法的类产生影响,因为这些方法的API(即调用这些公共方法的规则)将保持不变?我能想到为什么私有方法有用的唯一原因是它可以帮助你编写重复的代码.例如,如果所有公共方法都做了同样的事情,那么您可以声明一个执行此任务的私有方法,并且可以由公共方法使用.
其他问题,在私有方法中编写实现而不是公共方法有什么好处?
这是一个小例子:
public class Sum{
private int sum(int a, int b){
return a+b;
}
public int getSum(int a, int b){
return sum(a,b);
}
}
Run Code Online (Sandbox Code Playgroud)
VS ...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
Run Code Online (Sandbox Code Playgroud)
第一个样本如何更有益?
java encapsulation private-methods stringtokenizer public-method
public-method ×10
java ×4
interface ×2
ruby ×2
c# ×1
coding-style ×1
jquery ×1
jquery-ui ×1
methods ×1
oop ×1
package ×1
php ×1
readability ×1
visibility ×1