以下是通过调用父类构造函数初始化属性时,选择不执行父类的代码的例子: 复制 class A { private int x; public A(int x) { Console.WriteLine("A.A"); this.x = x; } } class B : A { private int y; public B(int x, int y) : base(x) { Console.WriteLine("B.B"); this.y = y; } } 在这个例子中,不必执行父类的所有代码。有哪些
时间: 2024-03-09 13:51:34 浏览: 97
在这个例子中,如果我们想要选择不执行父类的代码,我们可以将父类的构造函数调用从派生类的构造函数中删除。这将会使得父类的构造函数不会被执行。例如,我们可以将B类的构造函数修改为:
```
class B : A
{
private int y;
public B(int x, int y) /* : base(x) */
{
Console.WriteLine("B.B");
this.y = y;
}
}
```
在这个修改后的B类中,我们将父类构造函数调用的语句注释掉了,因此父类A的构造函数不会被执行。
相关问题
java子类调用父类构造函数
Java中,子类调用父类构造函数的方式是通过使用super关键字。super关键字可以在子类的构造函数中调用父类的构造函数,以完成父类成员变量的初始化。
以下是一个示例代码:
```java
class Parent {
private int num;
public Parent(int num) {
this.num = num;
}
public void display() {
System.out.println("Parent class: " + num);
}
}
class Child extends Parent {
private int childNum;
public Child(int num, int childNum) {
super(num); // 调用父类的构造函数
this.childNum = childNum;
}
public void display() {
super.display(); // 调用父类的display方法
System.out.println("Child class: " + childNum);
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child(10, 20);
child.display();
}
}
```
输出结果为:
```
Parent class: 10
Child class: 20
```
填写程序所缺代码,程序代码如下:#include <iostream> using namespace std; class A { private: int a; public: A() { a=0; cout<<"A类的无参构造函数被调用,a="<<a<<endl; } A(int x) { a=x; cout<<"A类的有参构造函数被调用,a="<<a<<endl; } ~A() { cout<<"A类的析构造函数被调用,a="<<a<<endl; } }; class B { private: int b; A a1; A a2; public: B() { b=0; cout<<"B类的无参构造函数被调用,b="<<b<<endl; } B(int x,int y, int z): (1) //分别用y,z去初始化a1、a2,用x去初始化b { (2) ; cout<<"B类的有参构造函数被调用,b="<<b<<endl; } ~B() { cout<<"B类的析构造函数被调用,b="<<b<<endl; } }; int main() { B obj1; cout<<endl; B obj2(10,20,30); cout<<endl; return 0; }
填空处的代码如下:
```
B(int x,int y, int z): a1(y), a2(z)
{
b=x;
cout<<"B类的有参构造函数被调用,b="<<b<<endl;
}
```
在构造函数的初始化列表中,对a1、a2进行初始化,使用a1(y)和a2(z)来调用它们的有参构造函数,分别使用y和z作为参数。然后再对b进行赋值,即b=x。
阅读全文