Rumah  >  Soal Jawab  >  teks badan

关于JAVA构造器的使用问题?

class SuperClass {
  private int n;
  SuperClass(){
    System.out.println("SuperClass()");
  }
  SuperClass(int n) {
    System.out.println("SuperClass(int n)");
    this.n = n;
  }
}
class SubClass extends SuperClass{
  private int n;
  
  SubClass(){
    super(300);
    System.out.println("SubClass");
  }  
  
  public SubClass(int n){
    System.out.println("SubClass(int n):"+n);
    this.n = n;
  }
}
public class TestSuperSub{
  public static void main (String args[]){
    SubClass sc = new SubClass();
    SubClass sc2 = new SubClass(200); 
  }
}

请问为什么说:1.子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
该案例中,(1)子类SubClass已经继承了父类SuperClass,里面的构造器不是已经发生继承了?
么?(2)该处子类SubClass的SubClass()方法是重写的还是继承的哈?这里应该是无常的构造器哈,怎么也有super(300)啊?
跪求指教哈!!

PHP中文网PHP中文网2716 hari yang lalu587

membalas semua(1)saya akan balas

  • PHPz

    PHPz2017-04-18 10:52:01

    1. Subkelas tidak boleh mewarisi pembina kelas induk. Subkelas akan membuat instantiate kelas induk sebelum membuat instantiat.

    2. SubClass() ialah pembina lalai, bukan mengatasi atau mewarisi. super(300) ditulis oleh anda, dan super() dipanggil secara lalai dalam SubClass(int n).

    balas
    0
  • Batalbalas