Java で Object クラスに null パラメータのコンストラクタが必要なのはなぜですか?

PHPz
リリース: 2024-01-24 18:39:04
転載
743 人が閲覧しました

java中为什么 Object类要有一个空的构造函数

Java のオブジェクト クラスに空のコンストラクターがあるのはなぜですか

他のクラスは Object クラスを継承し、したがって Object コンストラクター メソッドを継承するため、パラメーターなしのコンストラクターを明示的に定義する必要はありません。

Object はすべてのクラスの親クラスです。これを継承する他のクラスがないため、インスタンス化には引数のないコンストラクターが必要です。

Java は、優れた汎用性、効率性、プラットフォームの移植性、セキュリティを備えたクロスプラットフォームのオブジェクト指向プログラミング言語です。 PC、データセンター、ゲーム機、科学スーパーコンピュータ、携帯電話、インターネットなどで広く使用されています。同時に、Java には世界最大の開発者の専門コミュニティがあり、さらなる開発と革新のための強固な基盤を提供しています。

オブジェクト object は、現実世界の周囲のオブジェクトを模倣するためによく使用されます。

ソフトウェア オブジェクトは、状態と動作を持つ現実世界のオブジェクトのモデルです。状態は、ユーザー識別子によって名前が付けられた変数を通じて維持されます。メソッドは、オブジェクトの動作を実行する、オブジェクトに関連付けられた関数です。したがって、ソフトウェア オブジェクトは、変数を通じて状態を維持し、メソッドを通じて動作を実行するモデルです。

オブジェクトは、オブジェクト指向テクノロジを理解するための鍵です。学習する前に、犬、テーブル、テレビ、自転車などの実際の物体を観察することができます。これらのオブジェクトには、状態と動作という 2 つの共通の特性があります。たとえば、犬には独自の状態 (名前、色、繁殖力、空腹など) や行動 (尻尾を振るなど) があります。同様に、自転車には状態 (現在のギア、車輪など) と動作 (ブレーキ、加速、減速、ギアの変更など) があります。これらのオブジェクトを観察することで、オブジェクト指向テクノロジーをより深く理解できるようになります。

空の C コンストラクター関数本体を記述する意味は何ですか

オブジェクトのインスタンス化とデータの初期化は、通常、コンストラクターを通じて完了します。 Java では、すべてのクラスが Object クラスから継承されるため、Object クラスの空のパラメーター コンストラクターがデフォルトで継承されます。これは、null コンストラクターを作成しなくても、null コンストラクターは依然として存在することを意味します。 ただし、パラメーター化されたコンストラクターは通常、開発者自身によって作成されます。パラメーター化されたコンストラクターは空のパラメーターのコンストラクターと同様に機能しますが、パラメーターを受け取り、特定の初期化操作を実行できます。したがって、パラメーター化されたコンストラクターを使用すると、オブジェクトのデータをより柔軟に初期化できます。 要約すると、空のパラメーター コンストラクターは Object クラスから継承されたデフォルトのコンストラクターですが、パラメーター化されたコンストラクターは開発者自身によって作成され、パラメーターを受け取り、特定の初期化操作を実行できます。

例を挙げて説明しましょう

文字列高さ;文字列属性を持つクラス Monitor があります

###幅###

パブリック モニター(){}

パブリック モニター(文字列の高さ、文字列の幅){}

空のパラメーターとパラメーターが 1 つずつあるコンストラクター メソッド

メインメソッドで初期化アクションを実行します

モニターmonitor=new Monitor();

この構造体は表示オブジェクトを作成するだけであり、そのプロパティには値がありません。手動で値を割り当てることもできます

例:monitor.height=100;

monitor.width=200;

パラメータ付きのものを使用する場合は異なります。やることははるかに少なくなります

モニターmonitor2=新しいモニター("100","200");

ここでは、属性に値を割り当てるために、必要なパラメータを直接入力するだけです。これにより、多くの作業が節約されますか?

これが利点です!

回答完了しました!

コンストラクターは、主にオブジェクトの作成時にオブジェクトを初期化するために使用される特別なメソッドです。つまり、オブジェクトのメンバー変数に初期値を代入します。

オブジェクトを作成するステートメントでは常に new 演算子とともに使用されます。特別なクラスには複数のコンストラクターを含めることができ、パラメーターの数またはパラメーターのタイプ、つまりコンストラクターのオーバーロードに従って区別できます

コンストラクターと他のメソッドの違い

1. コンストラクターの名前はクラス名とまったく同じである必要がありますが、一般メソッドはクラス名と同じであってはなりません。

2. コンストラクターの関数は、主にクラスのオブジェクト作成時の初期化状態を定義するために使用されます。戻り値がなく、void で変更することはできません。これにより、自動的に何も返さないだけでなく、しかし、それは何も返せません。仕方がないです。そして、他のメソッドには戻り値があります。たとえそれが void の戻り値であっても、メソッド本体自体は自動的に何も返さないものの、何かを返すようにすることはできます。安全ではない可能性があります。

3. コンストラクターは直接呼び出すことはできません。new 演算子を使用してオブジェクトが作成されるときに自動的に呼び出される必要があります。一般的なメソッドはプログラムの実行時に呼び出されます。

4. クラスを定義するとき、通常はクラスのコンストラクターが表示され、関数内での初期化作業を省略できます。Java コンパイラーはデフォルトのコンストラクターを提供します。このデフォルトのコンストラクター関数はパラメーターを取りません。この機能は一般的なメソッドには存在しません

簡単に言えば、コンストラクターはオブジェクトを作成するために使用されますが、より専門的にはオブジェクトのインスタンス化と呼ばれます。

###意味:###

クラスA

{

パブリック A(){}

}

###使用:###

A a=new A();//ここで、A() はコンストラクターです。

注意すべき点は、クラスにコンストラクターが定義されていない場合、コンパイラーは自動的に空のコンストラクターを生成し、クラスの各メンバーにデフォルト値が割り当てられることです。

ただし、クラス内にプライベート コンストラクターが 1 つだけ定義されている場合、このクラスはインスタンス化されません。

クラスA

{

文字列 a;

private A() { }//このクラスはインスタンス化できません

}

パラメータ付きのコンストラクタを定義し、パラメータなしのコンストラクタを定義しない場合は、このクラスのオブジェクトをインスタンス化するときにパラメータを指定する必要があります。

クラスA

{

文字列 a;

パブリック A(文字列 str) {a=str; }

}

このようなオブジェクトをインスタンス化することはできません A a=new A();

コンストラクターは動的コンストラクターと静的コンストラクターに分けられます。

動的コンストラクターは、クラスまたは構造体がインスタンス化されるときに、そのクラスまたは構造体にメモリ領域を割り当て、クラスまたは構造体のメンバー変数の初期化を完了します。動的コンストラクターはオーバーロードすることができます。つまり、同じコンストラクター名に、型と数が異なる複数のコンストラクターが存在します。パラメータ付きコンストラクタとパラメータなしのコンストラクタの間に本質的な違いはありません。パラメータ付きコンストラクタは、渡された変数によって制御することも、メンバー変数を直接初期化することもできます。コンストラクタでは、メンバー変数をデフォルト値に初期化できます。

静的コンストラクターはパラメーターを運ぶことができません。つまり、クラス内で使用できる静的コンストラクターは 1 つだけです。これは、静的メンバーへの最初のアクセス、またはこのクラスの動的オブジェクトの最初のインスタンス化の前に呼び出されます。

c コンストラクターは空の文字列を生成します ####含む###### ####含む######

名前空間 std を使用します;

#MAXLENGTH 1000を定義

クラスCString

{

char m_buff[MAXLENGTH];

###公共:###

CString(); //コンストラクター 1、空の文字列に設定

~CString();

friend ostream& 演算子

char 演算子[](int i)const;

};

CString::CString()

{

//m_buff[0]=NULL; どういう意味ですか?

memset(m_buff,0,sizeof m_buff); //文字列初期化関数

}

char CString::operator[](int i)const

{

m_buff[i]を返す;

}

ostream& 演算子

{

return Out

}

CString::~CString()

{

//delete[] m_buff; 兄さん、new なしで delete を使用することはできません。削除は動的に割り当てられる必要があります。

}

int main()//通常は int

と書きます

{

CString s1;

cout

return 0; //

を書く必要はありません

} とにかく、エラーは報告されません。ご希望の機能が実現できるかどうかは、あなたの仕事です。 c 道は長いので、ゆっくり歩きましょう。

Java のコンストラクター メソッドとは何ですか

この工法は一般的な工法とは異なる特殊な工法です:

1. コンストラクターの名前は、コンストラクターが定義されているクラス名とまったく同じである必要があり、戻り値の型はなく、void さえありません。

2. コンストラクター メソッドは、オブジェクトの作成時に new 操作を使用して呼び出されます。コンストラクターの機能は、オブジェクトを初期化することです。

3. static、final、synchronized、abstract、native では変更できません。コンストラクターはサブクラスに継承できません。

クラス RectConstructor{

倍長;

倍幅;

double area(){

長さ*幅を返します;

}

//以下のメソッドはいわゆる構築メソッドで、戻り値がなく、メソッド名はクラス名と同じです~~~

RectConstructor(double width,double length){//パラメータ付きのコンストラクター メソッド

this.length=長さ;

this.width=幅;

}

}

実際の構築方法は、クラスのメンバーに初期値を代入するというものです~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上がJava で Object クラスに null パラメータのコンストラクタが必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:docexcel.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!