私は継承について学び、以下に示すスーパークラスとサブクラスを持つこの単純なプログラムを使って作業しています。私の質問はこのプログラム特有のものではありません。しかし、これは私が最初にこれが起こったのを見たところで、より一般的な概念的な質問の例として使っています。
クラスをインスタンス化してコンストラクタを実行し、内容を出力するのはなぜですか?これまでの私の理解では、クラスをインスタンス化するだけでオブジェクトが作成されますが、何もしません。クラスをインスタンス化すると、クラスのコンテンツが出力されるのはなぜですか?
SuperClass1.java
public class SuperClass1 {
public SuperClass1(){
System.out.println("This is the superclass constructor.");
}
}
SubClass2.java
public class SubClass2 extends SuperClass1
{
public SubClass2()
{
System.out.println("This is the subclass constructor.");
}
}
Main.java
public class Main {
public static void main(String[] args)
{
SubClass2 obj1 = new SubClass2(); // why should this print something?
}
}
出力
これはスーパークラスのコンストラクタです。
これはサブクラスのコンストラクタです。
「クラスをインスタンス化する」とは、しばしば*何かをすることを意味します*。 Java自体は、各フィールドを0(またはnullまたはfalse)に設定する以外の方法を実際にはわかりません。それだけでは十分ではありませんので、実際にはクラスがインスタンス化されたときに何か*する必要があります。あなたのケースでは、 "インスタンス化"に 'println'が含まれます。 – markspace
それがうまくいくからです。すべての基本的なことが説明されているので、Oracle Javaチュートリアルを読むことをお勧めします。 – Kayaman