相关疑难解决方法(0)

在调用超类的构造函数之前,有没有办法在Java中初始化子类的成员变量?

我需要这个,因为超类中的构造函数正在调用在子类中重写的方法.该方法返回一个传递给子类构造函数的值.但必须在子类构造函数之前调用超类构造函数,因此我没有机会保存传入的值.

java oop

9
推荐指数
2
解决办法
7896
查看次数

Java构造函数不是那么直观.或许它不是Java,它的C#不直观

给定此Java代码,此输出0和4:

class A{
   A() {  print();   }
   void print() { System.out.println("A"); }
}

class B extends A{
   int i =   Math.round(3.5f); 

   public static void main(String[] args){
      A a = new B();
      a.print();
   }
   void print() { System.out.println(i); }
}
Run Code Online (Sandbox Code Playgroud)

使用这个相同的C#代码,输出4和4

使用系统;

class A{
   internal A() {  print();   }
   virtual internal void print() { Console.WriteLine("A"); }
}

class B : A{
   int i =  (int) Math.Round(3.5f); 

   public static void Main(string[] args){
      A a = new B();
      a.print();
   } …
Run Code Online (Sandbox Code Playgroud)

c# java rationale

6
推荐指数
1
解决办法
199
查看次数

标签 统计

java ×2

c# ×1

oop ×1

rationale ×1