我的第一个问题是 -
class Explain() {
public Explain() {
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数是否应始终声明为公共?
如果我创建一个private构造函数怎么办?
我总是看到构造函数是隐含的public.那么为什么private构造函数有用呢?或者根本没用.因为没有人可以调用它,或者从不创建对象(因为private构造函数)!这是我的第二个问题.
每当我用Java编写带有更多关键字的方法时public void,每次我用另一种方式编写它.有时" static public void"有时" public static void"等.
这些关键字的最佳订单(最佳做法)是什么?
[ abstract/static] [ final] [ synchronized] [ public/private/protected] [ result_type] ???
我有一个公共程序集/项目,它有一个抽象基类,然后是几个我想公开给其他程序集的派生类.
我不希望抽象基类出现在Intellisense中的这些其他程序集中,所以我想我会成功internal,但是我得到了这个错误:
可访问性不一致:基类"设置"比"IrcSettings"类更难访问....
我真的不明白.我被迫制作抽象Settings类public,因此在这个程序集之外可见.
我怎样才能成为这门课internal呢?
ReSharper建议改变类中public构造函数的可访问性,但它没有说明这背后的基本原理.abstractprotected
你能解开一些光吗?
在C#中,我们无法在从基类重写方法时更改访问修饰符.例如
Class Base
{
**protected** string foo()
{
return "Base";
}
}
Class Derived : Base
{
**public** override string foo()
{
return "Derived";
}
}
Run Code Online (Sandbox Code Playgroud)
这在C#中无效,会产生编译时错误.
我想知道原因,为什么不允许这样做.是否存在任何技术问题,或者是否会导致访问限制方面不一致的问题?
在Java中,访问说明符和访问修饰符是一样的吗?
来自Delphi的GoLang新手,C++:
我第一次尝试在Go中创建自己的包,我遵循了有关如何布局工作空间等的所有说明,但我一直在收到编译器错误:
./myPackage.go:52: undefined: myFunc
Run Code Online (Sandbox Code Playgroud)
稍微探讨一下后,我发现Go中的公共访问修饰符只需通过大写声明一个函数即可实现.大.
但是当我开始尝试容器类时 - List对于初学者,我发现我必须声明一个List引用返回值,如下所示:
func GetFactors(value *int64) *list.List {...
Run Code Online (Sandbox Code Playgroud)
*list 是小写的.
当我声明对列表的本地引用时 - 我必须使用:
l := list.New()
Run Code Online (Sandbox Code Playgroud)
再次,小写的list.
所以,我很困惑.规则是什么?列表调用和引用显然是公开的,或者我无法调用/使用它们 - 所以为什么它们是小写的?
在C#中,您可以将类标记internal为只能从同一个包中访问它.Java中有类似的东西吗?
如何可以在C++类中声明public,private或protected?
access-modifiers ×10
java ×4
c# ×3
oop ×3
inheritance ×2
private ×2
public ×2
.net ×1
c++ ×1
class ×1
coding-style ×1
constructor ×1
go ×1
internal ×1
protected ×1
syntax ×1