如果一个类有一个私有构造函数,那么它就无法实例化.所以,如果我不希望我的类被实例化并仍然使用它,那么我可以使它静态.
私有构造函数有什么用?
此外,它在单例类中使用,但除此之外,还有其他用途吗?
(注意:我排除上述单例的原因是我不明白为什么在有静态类可用时我们根本需要一个单例.你可能不会因为我在这个问题上的混乱而回答这个问题.)
在PHP构造函数和析构函数文档中,它说明了这一点
注意:如果子类定义构造函数,则不会隐式调用父构造函数.为了运行父构造函数,需要在子构造函数中调用parent :: __ construct().
但是,如果子类没有调用构造函数,那么父构造函数是否仍会被调用?或者我们应该创建一个调用父构造函数的构造函数吗?
IE:
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud) 我是一个非常新的编程,想要知道我是否能以某种方式从我已经习惯new MyClass();在另一个类中使用它的类中获取对象,并且我不需要new MyClass();再次使用它.希望你明白这一点.
一些非常简单的例子:
class MyFirstClass
{
Something st = new Something();
}
class Something()
{
// some code
}
class MySecondClass
{
// This is where I want to use the object from class Something()
// like
getObjectFromClass()
}
Run Code Online (Sandbox Code Playgroud) 假设有一个类,其所有构造函数都声明为private.
例如.:
public class This {
private This () { }
public someMethod( ){
// something here
}
// some more-- no other constructors
}
Run Code Online (Sandbox Code Playgroud)
据我所知,将所有构造函数设为私有类似于将"This"类声明为final - 这样它就无法扩展.
但是,我得到的Eclipse消息给我的印象是这是可能的 - 一个全构造函数 - 私有类可以扩展.看看这个:
当我尝试用类似的东西扩展这个类
public class That extends This {
...
}
Run Code Online (Sandbox Code Playgroud)
Eclipse给出了一个错误:" 隐式超级构造函数This()对默认构造函数不可见.必须定义一个显式构造函数. "
当我定义自己的构造函数时:
public class That extends This {
That () {..}
...
}
Run Code Online (Sandbox Code Playgroud)
这次我得到:" 隐式超级构造函数This()对于默认构造函数是不可见的.必须显式调用另一个构造函数. "
有没有办法绕过这个 - 扩展一个所有构造函数都是私有的类?
如果有,怎么样?
如果不是,那么阻止一个类被i扩展的区别是什么?)使它的构造函数变为私有,以及ii.将它定义为final?
注意:我看到Java中的构造函数可以是私有的吗?在其他一些讨论中.
构造函数可以在Java中保密吗?在什么样的情况下我们使用它?
例如一个类:
//class1
class A {
private A() { } // why would I make it private?
public A(int) { } //why isn't it implicitly public?
}
//class2
class B {
public static void main(String[] args) {
//A a = new A();
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数实例化一个类,为什么它有访问修饰符?是否有必要声明构造函数是私有的?