ホームページ  >  記事  >  Java  >  JAVA チュートリアル | 第 1 章 基本概念

JAVA チュートリアル | 第 1 章 基本概念

黄舟
黄舟オリジナル
2017-02-25 09:41:281323ブラウズ

JAVA 第 1 章 基本概念

JAVA を学ぶには、まず JAVA とは何なのか、JAVA で何ができるのか、JAVA がどのような概念と機能を持っているのかを知る必要があります。まず、JAVA とは何かということから始めて、皆さんをピットに連れて行きましょう。

前 2 つの記事で Java のいくつかの概念と機能について説明しましたが、この記事では残りの基本概念を補います。もちろん、各記事の概念的なものはリズムに従って展開されます。各記事では一度に多くの概念を紹介しません。

  • OOP: オブジェクト指向プログラミング、オブジェクト指向プログラミング

  • JAVAの3大特徴

  • JAVAのその他の基本概念


1. OOP の考え

まず第一に、OOP の元のアイデアの多くは Simula 言語から来ており、改良と改良の過程にあります。 Smalltalk 言語の標準化 以前のアイデアをさらに拡張し、再注釈を加えます。 OO思考とOOPLはほぼ同時に発展し、お互いを促進し合っていると言えます。関数型プログラミングや論理プログラミングに代表される機械に近い実際のコンピューティング モデルとは異なり、OOP は正確な数学的記述をほとんど導入しませんが、アプリケーション分野におけるエンティティ間の関係を近似的に反映できるオブジェクト モデルを確立する傾向があります。人間が物事を認識するために使用する哲学的見解に近い計算モデルです。ここからは、OOP とは一体何なのかという自然な話題につながります。 [D&T 1988][B.S 1991] 。 OOP では、オブジェクトは計算の対象として機能し、独自の名前、ステータス、および外部メッセージを受信するためのインターフェイスを持ちます。オブジェクト モデルでは、新しいオブジェクトの生成、古いオブジェクトの破棄、メッセージの送信、およびメッセージへの応答が OOP コンピューティング モデルの基礎を形成します。
オブジェクトを生成するには 2 つの基本的な方法があります:
1 つは、プロトタイプ オブジェクトに基づいて新しいオブジェクトを生成する方法です。 1 つは、クラスに基づいて新しいオブジェクトを生成することです。 プロトタイプの概念は、概念学習の段階的な性質を説明するために認知心理学で使用されています。プロトタイプ モデル自体は、代表的なオブジェクトを基礎として提供することで、さまざまな新しいオブジェクトを生成し続けます。実用的なアプリケーションに沿っています。プロトタイプ委任も OOP のオブジェクト抽象化であり、コード共有メカニズムの 1 つです。クラスは、1 つ以上のオブジェクトの一般的な説明を提供します。形式的な観点から見ると、クラスは型に関連しているため、クラスはそのクラスから派生したインスタンスのコレクションと同等です。このような考え方は、いくつかの矛盾も引き起こすでしょう。典型的なものは、継承システムの下では、サブセット (サブクラス) オブジェクトと親セット (親クラス) オブジェクトの間の動作の互換性を達成するのが難しい場合があるということです。 OOP では、サブタイプがサブクラスと等しくないことが引用されています [Budd 2002]。すべてがオブジェクトであるという世界観の中で、クラスモデルをベースにメタクラスを備えた新しいオブジェクトモデルが誕生しました。つまり、クラス自体は他のクラスのオブジェクトでもあります。上記の 3 つの根本的に異なる観点は、それぞれ、クラス (クラスベース)、プロトタイプベース (プロトタイプベース)、およびメタクラスベース (メタクラスベース) に基づいた 3 つのオブジェクト モデルを定義します。そして、これら 3 つのオブジェクト モデルは、さまざまなプログラミング言語につながりました (静的と動的の違いはひとまず脇に置いておきます)。はい、私たちが頻繁に接する C++ と Java はクラスベースのオブジェクト モデルを使用していますが、さらに、まったく異なるオブジェクト モデルを使用する、私たちが接していない多くの OOPL が存在します。それらは別の観点から解釈されています。 OOPの意味合い。 oop の基本的な考え方は何ですか? コンポーネントの実装とインターフェースを分離し、コンポーネントをポリモーフィックにします。ただし、この 2 つには根本的な違いがあります。 OOP は、プログラム構築において言語要素の構文を重視します。継承し、クラスを使用し、オブジェクトを使用し、オブジェクトがメッセージを渡す必要があります。 GP は、継承の有無を気にせず、製品の分類、それらがどのようなタイプで、どのように動作するかを分析することから始めます。つまり、2 つのものが等しいとはどういう意味でしょうか?等価演算を正しく定義するにはどうすればよいですか?これは単なる等価演算ではなく、より深く分析すると、「等価」という一般的な概念は、2 つのオブジェクトの部分、少なくとも基本的な部分が等しいことを意味することがわかります。これに基づいて、普遍性が得られます。等価演算。オブジェクトの種類について話しましょう。逐次シーケンスと、その逐次シーケンスに対する一連の操作があるとします。では、これらの操作のセマンティクスは何でしょうか?複雑さのトレードオフの観点から、どのような一連のシーケンスをユーザーに提供すべきでしょうか?このシーケンスにはどのような操作が存在しますか?どのような注文が必要ですか?これらのコンポーネントの概念的な分類が明確になって初めて、実装の問題、つまりテンプレート、継承、またはマクロを使用するかどうかに対処できます。どのような言語やテクノロジーが使用されていますか? gp の基本的なポイントは、標準的な分類法を使用して抽象的なソフトウェア コンポーネントとその動作を分類することであり、その出発点は、実際の効率的で言語に依存しないアルゴリズムとデータ構造を構築することです。もちろん、最終的なキャリアは言語であり、言語なしではプログラミングは不可能です。 stl は C++ を使用します。ada を使用して実装することも、他の言語で実装することもできます。結果は異なりますが、基本的なことは同じです。二分検索と並べ替えはどこでも使用されており、人々はそれを行っています。コンテナのセマンティクスは言語によって若干異なります。しかし、基本的な違いは明らかに、gp が依存するセマンティクスとセマンティクスの分解です。たとえば、コンポーネントの交換が必要であると判断し、このコンポーネントが別の言語でどのように機能するかを検討します。明らかに、焦点は意味論と意味分類にあります。 oop が強調していること (強調しすぎていると思います) は、クラス間の階層関係を明確に定義することです。 oop は、階層関係を確立する方法を説明しますが、これらの関係の本質については説明しません。
(この段落は理解するのが簡単ではありません。一部の用語は適切な中国語訳を得るまでに時間がかかる場合があります - 翻訳者)
オブジェクト指向プログラミング手法 OOP は、1990 年代にのみ普及したソフトウェア プログラミング手法です。オブジェクトの「抽象化」、「カプセル化」、「継承」、「ポリモーフィズム」を強調します。プログラミングは「データ構造」+「アルゴリズム」で構成されるものとして話されます。マクロの観点から見ると、OOP 下のオブジェクトはプログラミング中心の、プログラム指向のオブジェクトです。

2. JAVAの3大特徴(写真)

上記は3大特徴の概念と定義ですの比較グラフ 、分析しましょう 見てみましょう:

Java の構文は C++ よりも比較的単純です。もう 1 つの側面は、Java は非常に小さなマシン上でソフトウェアを実行できることです。クラス ライブラリのサポートは約 40kb で、基本的な標準ライブラリとスレッドのサポートを追加するには、さらに 125kb のメモリが必要です。

OO:オブジェクト指向設計は、オブジェクトとそのインターフェイスに焦点を当てたプログラミング テクノロジです。

1. 抽象化:
抽象化とは、現在の目標に関連しないトピックの側面を無視して、目標に関連する側面により十分な注意を払うことです。現在の目標。

抽象化は問題全体を理解することを目的とするのではなく、問題の一部のみを選択し、当面はいくつかの詳細を省略します。

抽象化には 2 つの側面があり、1 つはプロセスの抽象化、もう 1 つはデータの抽象化です。

2. 継承:

継承は、クラスを接続し、クラスの再利用を許可および促進する階層モデルです。これは、共通性を明確に表現する方法を提供します。

オブジェクトの新しいクラスは、クラス継承と呼ばれるプロセスで、既存のクラスから派生できます。

新しいクラスは、元のクラスの特性を継承します。 新しいクラスは、元のクラスの派生クラス(サブクラス)と呼ばれ、元のクラスは、新しいクラスの基底クラス(親クラス)と呼ばれます。 。

派生クラスは基本クラスからメソッドとインスタンス変数を継承でき、クラスは特別なニーズにより適したものにするために新しいメソッドを変更または追加できます。

3. カプセル化:

カプセル化はプロセスとデータを囲むことであり、データへのアクセスは定義されたインターフェイスを介してのみ可能です。

オブジェクト指向コンピューティングは、保護されたインターフェイスを通じて他のオブジェクトにアクセスする、一連の完全に自律的でカプセル化されたオブジェクトとして実世界を表現できるという基本概念から始まります。

4. ポリモーフィズム: ポリモーフィズムとは、異なるクラスのオブジェクトが同じメッセージに応答できるようにすることを指します。

ポリモーフィズムには、パラメーター化されたポリモーフィズムと包含ポリモーフィズムが含まれます。

ポリモーフィック言語には、柔軟性、抽象化、動作共有、コード共有という利点があり、同じ名前のアプリケーション関数の問題をうまく解決します。

概要: 動的バインディングには非常に重要な機能があります。それは、既存のコードを変更せずにプログラムを拡張できることです。

したがって、ポリモーフィズムはオープンクローズ原則の基礎であることを覚えておいてください。

3. JAVA のその他の基本概念

String と StringBuffer の違い
  • JAVA プラットフォームは 2 つのクラスを提供します。 String と StringBuffer。文字列、つまり複数の文字を含む文字データを保存および操作します。 String クラスは、数値的に不変の文字列を提供します。この StringBuffer クラスによって提供される文字列が変更されます。文字データが変更されることがわかっている場合は、StringBuffer を使用できます。通常、文字データを動的に構築するには StringBuffers を使用します。
  • int と Integer の違いは何ですか

Java は、参照型とプリミティブ型 (または組み込み型) の 2 つの異なる型を提供します。 Int は Java のプリミティブ データ型で、Integer は Java が int に対して提供するカプセル化クラスです。 Java は、すべてのプリミティブ型に対してラッパー クラスを提供します。
プリミティブ型 -->> カプセル化されたクラス
ブール型 -->> 文字
short -->> ->> Integer
long -->> Long
float -->> Float
double -->> Double


参照型とプリミティブ型はまったく異なる動作をします。 。参照型とプリミティブ型には異なる特性と使用法があり、次のものが含まれます。サイズと速度の問題、この型がどのデータ構造に格納されるか、参照型とプリミティブ型がクラスのインスタンス データとして使用される場合の指定内容 デフォルト値。オブジェクト参照インスタンス変数のデフォルト値は null ですが、プリミティブ型インスタンス変数のデフォルト値はその型によって異なります。


    String は最も基本的なデータ型です
基本的なデータ型には、byte、int、char、long、float、double、boolean、short が含まれます。

java.lang.String クラスは Final 型であるため、このクラスを継承または変更することはできません。効率を向上させ、スペースを節約するには、StringBuffer クラスを使用する必要があります


    final クラス: 他の人があなたのクラスから新しいクラスを派生するのを防ぐため、このクラスは拡張可能ではありません。
  • Java のすべてのクラスは、Object クラスを拡張しています。
  • 抽象クラス: 1 つ以上の抽象メソッドを指定するクラスは、それ自体が抽象として定義されている必要があります。例: public abstract string getDescripition
  • オーバーロード: 複数のメソッドの名前は同じだがパラメーターが異なる場合、コンパイラーはどのメソッドを呼び出すかを選択する必要があります
  • 継承: クラスを拡張して新しいクラスを取得することを継承と呼び、すべてのクラスはオブジェクトのルート スーパークラスによって拡張されます。ルート スーパークラスについては以下で紹介します。
  • JAVA オブジェクトの 3 つの主な特徴
1.ehavior---このオブジェクトができることを説明します。


2.tate---メソッドがオブジェクトに適用されたときのオブジェクトのリフレクション。

3.identity---他の同様の動作オブジェクトと区別するマーク。

各オブジェクトには固有のアイデンティティがあり、これら 3 つは相互に影響を与えます。

    JAVAクラス間の関係:
use-a:依存関係

has-a:集約関係

is-a:継承関係--例:クラスAはクラスBを継承する。このとき、クラスAはクラスBのメソッドを持つだけでなく、独自のメソッドも持つ(共通性の中に個性が存在する)


  • コンストラクターを使用してオブジェクトを構築する: コンストラクターは、オブジェクトを構築して初期化する特別なメソッドです。

例: Data クラスのコンストラクターは Data

New Data() と呼ばれます --- 新しいオブジェクトを構築し、現在時刻を初期化します。

Data dujinyang=new Data()---オブジェクトを変数dujinyangに代入し、オブジェクトを複数回利用できるようにします ここで宣言する変数とオブジェクト変数は異なります で返される値です。

.newが参考になります。

コンストラクターの機能:


      1. コンストラクターは0、1つまたは複数のパラメーターを持つことができます

      2. コンストラクターとクラスは同じ名前です

      3. クラスは複数のコンストラクターを持つことができます

      4. コンストラクターには戻り値がありません

      5. コンストラクターは常に new 演算子とともに使用されます

  • Interface ) はクラスが行うべきことを指定しますなしでクラスは 1 つ以上のインターフェイスを実装できます

  • インターフェイスはクラスではなく、インターフェイスの要件を満たすクラスの仕様のセットです。

インターフェイスを実装する場合は、2 つの手順が必要です:

1) クラスが実装する必要がある指定されたインターフェイスを宣言します。

2) インターフェース内のすべてのメソッドの定義を提供します。

---- インターフェースを実装するクラスを宣言するには、implements キーワードを使用する必要があります。インターフェースはクラスではないため、new を使用してインターフェースをインスタンス化することはできません。

  • スーパークラス(基底クラス)とは何ですか?派生クラスとは何ですか?

クラスにはスーパークラス (基本クラス) が 1 つだけありますが、クラスは複数のインターフェイスを実装できます。 (覚えておいてください: Java の重要なインターフェイス: Cloneable。)

基本クラスとは何ですか?実際、これは親クラスであり、1 つのサブクラスと 1 つの親クラスの 2 つのクラスがあり、基本クラスは親クラスと同等であり、派生クラスはサブクラスと同等です。


基本クラス、スーパークラス、親クラスはすべて同じ意味を持ちますが、表現が異なるだけです。


例:


class BaBa{}


class A は BaBa を拡張します{}


これはBaBaがベースであると言えますA のクラス、BaBa は A のスーパークラス、BaBa は A の親クラス、逆に、A は BaBa のサブクラス、つまり派生クラスです。


  • 内部クラス: 内部クラスの定義は、別のクラスの内部で定義されたクラスです。

理由は次のとおりです:

1) 内部クラスのオブジェクトは、プライベート データを含む、それを作成したオブジェクトの実装にアクセスできます。

2) 内部クラスは、同じパッケージ内の他のクラスから隠すことができます。

3) 匿名の内部クラスはコールバックを簡単に定義できます。

4) 内部クラスを使用すると、イベント駆動型プログラムを作成するのが非常に便利になります。

上記は JAVA エントリーのチュートリアルです | 第 1 章 基本概念 詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


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