是否必须从子类构造函数中的构造函数中调用父构造函数?
要解释,请考虑以下示例:
class Parent{
function __construct(){
//something is done here.
}
}
class Child extends Parent{
function __construct(){
parent::__construct();
//do something here.
}
}
这样做是很正常的。但是,请考虑类Child的下列构造函数:
function __constr
在Java和C++中,术语“默认构造器”都是正式的,在这两个世界中,这似乎意味着不同的东西。我想知道我的理解是否正确,一些相关概念的正确命名是什么?
默认构造函数在中是指在没有为类定义构造函数时由编译器生成的( no -arg)构造函数。
C++中的默认构造函数意味着可以在没有参数的情况下调用构造函数。
给出以下示例
Java:
class NoCtorClass {
// No ctor defined, compiler is generating one --------- J-1
}
class NoArgCtorClass {
public No
我试图在一个类中创建一个JFrame,然后在我的主类中为它添加一个JPanel,这是不可能的吗? 这是我的主类 public class Main {
JPanel p;
JLabel lbl1;
public static void main(String[] args) {
new Main();
}
Main() {
new Window();
JPanel p = new JPanel();
JLabel lbl1 = new JLabel("Hello"
当我们从下面的类初始化对象时,哪些类将使用默认构造函数?
class X {}
class Y {
Y () {}
}
class Z {
Z(int i ) {}
}
类Z将不使用默认构造函数。类X将使用默认构造函数。
那Y呢?用户定义的空构造函数是否称为默认构造函数?就像他们在维基百科(Java部分) 上说的那样
或者,如果我们在初始化对象时可以说是默认构造函数,那么类中不应该定义构造函数吗?
我检讨过很多问题,但却找不到答案。
对于这样的班级:
class A {
public:
int i;
inline A() : i() {}
};
在普通C++98中,如何保证在声明时以最紧凑的方式调用默认(无参数)构造函数?
A a; //Is this guaranteed to call the default (argument-less) constructor?
A b(); //This is not what I want, the compiler thinks it's a function declaratio
在准备期末考试的时候,我在我正在学习的那本书中看到了下面的陈述。考虑到下列守则:
class A {
public A(int x) { }
}
class B extends A {
public B(int x ) { }
}
是否必须在类B(super(x))的构造函数中调用A类的构造函数。这本书说,这不是强制性的,因为他们有确切的数量和类型的参数。但是,当我在java编译器中尝试此操作时,会引发以下错误:
类A中的构造函数A不能应用于给定类型;必需: int查找:无参数原因:实际参数列表和形式参数列表长度不同,
我对Java很陌生。在下面的代码中,我很难理解这些概念。
class A {
private Integer intr;
public A(Integer intr) {
this.inrt = intr;
}
public Integer getIntr() {
return intr;
}
}
class B extends A {
public B(Integer intr) { //Eclipse asking me to create this constructor.
sup
我有三节这样的课:
public abstract class ClassA extends ClassX {
protected ClassA() {
super();
}
// more code
}
public class ClassB extends ClassA {
public ClassB() {
super();
}
// more code
}
public abstract class ClassC extends ClassB {
public ClassC() {
C#中的类怎么可能没有定义构造函数呢?例如,我有一个类
internal class TextStyle
{
internal string text = "";
internal Font font = new Font("Arial", 8);
internal Color color = Color.Black;
}
在代码中,这个类被实例化为
TextStyle textParameters = new TextStyle();
在这段代码中,我知道它可以与A类中的super(t)或B类中的无args构造函数一起工作。下面的代码使用B类中的无args构造函数。我知道如果你将无args构造函数从B类中去掉,代码就不能工作。我是编程新手,我想要理解的是B类中的no args构造函数有什么特别之处,为什么它必须存在才能让代码工作?特殊条件或规则是什么?
public class Test {
public static void main(String[] args) {
B b = new B(5);
}
}
class A extends B {
public A(int t
如果您有一个调用this()的构造函数,何时调用super()?在第一个构造函数中调用?还是在最后一个没有关键字this()的构造函数中?
主要电话:新B()
public class A {
public A(){
System.out.print("A ");
}
}
public class B extends A {
public B(){
// is super called here? Option 1
this(1);
System.out.print("B0 ");
在中,它声明
注意:如果子类定义了构造函数,则不会隐式调用父构造函数。为了运行父构造函数,需要在子构造函数中调用parent::__construct()。
但是,如果子类没有调用构造函数,那么父构造函数还会被调用吗?还是应该创建一个调用父构造函数的构造函数?
IE:
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __constru