ホームページ バックエンド開発 C#.Net チュートリアル C# と JAVA のオブジェクト指向構文の違いを比較する

C# と JAVA のオブジェクト指向構文の違いを比較する

Sep 06, 2017 pm 02:01 PM
.net java

オブジェクト指向は開発のアイデアです。覚えておくべき最も重要なことは、すべてがオブジェクトであるということです。プログラムをよりよく理解して作成できるようにするために、現実の物事を記述する方法とアイデアがプログラムに統合され、これがオブジェクト指向の思考になります。生活の中の物事をプログラムに統合するには、記述を特性と動作の 2 つの側面に分けて、それぞれの種類のオブジェクトをより適切に記述する方法が必要です。 , すると、プログラミングの世界から抽出されたクラスの概念は、人生における型の概念に相当します。あらゆるものには型が必要です。そして、人生の物事をさまざまな側面に従って分類すると、プログラミングにおけるすべてのクラスも、非常に抽象的であり、かなりの不確実性とランダム性を持っています。

クラスの構成:

Javaのクラスには属性とメソッドが含まれます。属性とはクラス内の変数で、静的変数、インスタンス変数(グローバル変数)、ローカル変数(メソッド内に存在し、宣言サイクルはメソッドの呼び出しフェーズに限定される)に分けられます

C#のクラスには以下のものがあります。フィールド、属性、メソッド。フィールドは Java の属性に対応します。C# の属性オブジェクトと Java の get アクセサーと set アクセサーは同じであり、どちらも動作を記述します。

クラスメンバーの呼び出し:

インスタンスメンバーはオブジェクトによって呼び出されます。静的メンバーはクラスによって呼び出されます。ただし、Java では静的メンバーをインスタンスによって呼び出すこともできるため、クラス内のすべての生徒が授業料を自由に制御できることになり、これは非常に悪い問題です。 C# はこの点で厳しく制限されており、静的メンバーはクラスによってのみ呼び出すことができます。

3つの主要な機能 - カプセル化

カプセル化:内部実装の詳細を隠し、データセキュリティ保護とコード再利用の効果を実現する手段。

カプセル化はどこにでもあり、一見シンプルですが無限に拡張可能です。カプセル化のための明示的なキーワードはありません。アイデアとメソッドであるため、Java と C# の間に文法的な違いはありません。ただ、カプセル化の効果を実現するためにアクセス修飾子を使用する場合、2 つの言語のアクセス修飾子は異なります。

Javaの場合:

private:プライベート、内部からのみアクセス可能

Dufault:デフォルト、同じパッケージ内の内部からアクセス可能。

保護: 保護されており、同じパッケージまたは異なるパッケージのサブクラス内でアクセス可能です。

パブリック:パブリック、どこからでもアクセス可能。

特徴: 明確なサイズ所有関係があります: private
(アセンブリの概念を導入しています。名前空間は Java のパッケージに似ていますが、論理的なグループ化です)それはJavaでは)パッケージは物理的なグループであり、アセンブリはプロジェクトに似ています):

private:プライベート、内部でのみアクセス可能。

internal: 内部、同じアセンブリ内でアクセス可能、デフォルトと同じ。

保護:保護されており、サブクラスでアクセスできますが、Javaの保護とは異なり、ここでのスコープは小さく、同じアセンブリ内の非サブクラスはアクセスできません。

保護された内部: 内部アクセス スコープと保護されたアクセス スコープの結合です。

パブリック:パブリック、どこからでもアクセス可能。

特徴: 明確なサイズの所有関係がなく、内部と保護のアクセス範囲のサイズが不明瞭です。



3 つの主要な特徴 - 継承
継承: 目的は、あるクラスに別のクラスのプロパティとメソッドを持たせることです。

Java の場合: extends を使用して継承の使用を示します

書き換えの要件: a. メソッド名、戻り値の型、パラメーターが同じであること b. アクセス修飾子のアクセス範囲が同じであること。親クラスのメソッドのアクセス修飾子;

親クラスのメンバーにアクセス: super キーワードを使用すると、コンストラクター メソッドで呼び出される親クラスのコンストラクター メソッドを指定できます。

C#の場合: use: 継承の使用を示します

書き換えの要件: a. メソッド名、戻り値の型、パラメータ、およびアクセス修飾子が同じであること b. 親クラスのメソッドが virtual によって変更されること。サブクラスのメソッドはオーバーライドによって変更されます

親クラスに正常にアクセスします:base キーワードを使用し、コンストラクター メソッドの後に Base (パラメーター) を使用して、親クラスのコンストラクター メソッドを呼び出すように指定します。base は静的環境では使用できません。親クラスの静的メンバーを呼び出すことはできません。

Covering: 新しいキーワードを使用します。 C# のオーバーライドの内容を紹介します。親クラスの非仮想メソッド、つまりオーバーライドできないメソッドの場合、オーバーライドを使用すると親クラスのメソッドをオーバーライドできます。上書きについての私の考えは、オーバーライドするためにメソッドを仮想で変更する必要があるという制限から生じる可能性のある問題を補うことです。ただし、それが使用できない場合は、上書きはあまり意味がありません。 、または上書きの実際の役割と効果をあまり理解していません。使用する場合は、専門家がコメントして疑問を解消できます。

書き換えが成功したかどうかの判断基準:親クラスのオブジェクトを指すメソッドが親クラスのメソッドを呼び出した場合、書き換えは失敗となります。書き換えは成功しました。

3つの主要な機能 - ポリモーフィズム

ポリモーフィズム: 同じ動作の複数の存在形式。症状には、オーバーロードと書き換えが含まれます。

オーバーロードの要件: a. 同じクラス内; c. パラメーターが異なる (パラメーターの数、型、順序)。

呼び出すときは、渡されたパラメータに基づいてどのメソッドを呼び出すかを決定します。

抽象クラスとインターフェース

抽象クラス:abstractで変更されたクラスは抽象クラスと呼ばれます。

出典: 私の意見では、抽象クラスのソースについては、理解を深めるために慎重に検討する価値があります。現実にはこのような問題がたくさんあります。つまり、この種のものがこの動作 (方法) を行うことはわかっていますが、それを行う方法がわかりません。たとえば、動物が動くことは誰もが知っていますが、あなたはそれを行うことができません。それぞれの動物がどのように動くのかわかりません。この時点でこの Animal クラスを定義する場合、必要なのはメソッド ヘッダー (何を行うかを記述する) のみで、メソッド本体 (その実行方法を記述する) がないためです。このメソッドは非常に特殊です。抽象メソッドとして使用する場合は、抽象変更を使用します。

Animalクラスには抽象メソッドがあるのですが、Animalクラスをインスタンス化した場合、moveメソッドを呼び出すとどのような問題が発生するのでしょうか?やり方が書いてないので不明。したがって、この未知の状況を回避するために、たとえば、Animal クラスは抽象クラスとして定義されます。注目すべき特徴は、インスタンス化できないことです。インスタンス化できないクラスの場合、その非静的メンバーを呼び出すことはできません。そのようなクラスの存在にはどのような意味があるのでしょうか。

要約: 抽象クラスの存在の意味は継承されることです。抽象クラスは抽象メソッド用に存在しますが、コンストラクタはありますが、インスタンス化することはできません。この点では、Java と C# は文法的に同じであるため、詳細は説明しません。

インターフェース: すべての実装クラスがこれらのルールと仕様を満たすように策定された一連のルールと仕様。実際のアプリケーションでは、プログラムの柔軟性を大幅に高めることができます。私のインターフェイス指向プログラミングに対する理解はそれほど深いわけではなく、たった 1 ~ 2 文で明確に説明することもできません。自分の経験を投稿し、そこから学ぶことができる専門家がいます。

違い: C# では、実装クラスがインターフェイス内のすべてのメソッドを実装していない場合、たとえば、自身を抽象クラスとして定義し、実装されていないメソッドを再コピーして抽象メソッドとして定義できます。

まとめ

私は長い間Java開発をしてきましたが、C#は教育のニーズのために学んだだけです。類似点があり、すぐに学ぶことができます。ここでは構文のみに焦点を当てます。大手はプロトコルに取り組んでおり、最下位層に取り組んでいます。そのため、彼らはこれを好みません。

以上がC# と JAVA のオブジェクト指向構文の違いを比較するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

See all articles