Benpian基本は最初のセクションでは、Javaの最も基本的な知識から学習を開始します。この知識セクションには、オブジェクト指向の三つの特徴:カプセル化、継承やポリモーフィズム、および一般的で重要な概念の混乱カバーとリロード比較分析のために。このセクションでは、より良いレビューを支援し、Javaのインタビューで話題の基本的なクラスをマスターする主です。
まず、どのようなオブジェクト指向ですか?機能は何ですか?
オブジェクト指向の考え方である、あなたは、私たちはエグゼクティブ・ディレクターになってみましょう、複雑な問題を単純化することができます。前記3つのオブジェクト指向:カプセル化、継承とポリモーフィズム。
パッケージ:物事のクラスにパッケージ、結合を低減するために、隠された内容。リザーブ内部インターフェイスの変更は、外部の発信者には影響しません外の世界との特定のインタフェース。
継承:既知のクラスから新しいクラスを派生、新しいクラスは、既知のクラスの動作や特性を有することができる、とすることができカバレッジと書き換え向上させるために使用クラス知られている機能を。
多型:多型が本質的に同じ名前がプログラムに存在するさまざまな方法を中心を通じて、三つの方法を達成するために:
-
親クラスのサブクラスで覆い達成するために
-
クラス内のメソッドによってオーバーロード達成され、
-
することで親クラスのオブジェクトとしてサブクラスのオブジェクトを実装するために使用
パース:
これは、かなり基本的な質問、オブジェクト指向の考え方だけでなく、そのとみなされている三の大特性、我々はより良い理解を持っているすべての必要性。次に、我々は3つのプロパティ上での詳細な博覧会と分析を行いました。
包装について
パッケージは、主に、読みやすさを向上させるために、そして隠された部分は、実装の詳細を切り離します。どのパッケージを参照するには、以下のケースで見てみましょう。
パッケージcom.company。 パブリッククラスメイン{ 公共の静的な無効メイン(文字列[] args){ 学生学生=新学生(); student.name = "小明"。 student.age = 16。 student.printStudentAge(); 学生student2 =新しい学生(); student2.name = "小白"。 student2.age = 120。 student2.printStudentAge(); } } クラスの学生{ ストリング名。 int型の年齢; ます。public void printStudentAge(){ System.out.printlnは(名前+ "同学的年龄:" +年齢)。 } }
次のようにコードをパッケージ化した後:
パッケージcom.company。 パブリッククラスメイン{ 公共の静的な無効メイン(文字列[] args){ 学生学生=新学生(); student.setName( "小明"); student.setAge(16)。 student.printStudentAge(); 学生student2 =新しい学生(); student.setName( "小白"); student.setAge(120)。 student2.printStudentAge(); } } クラスの学生{ プライベート文字列名; プライベートint型の年齢; パブリック文字列のgetName(){ 戻り名。 } 公共ボイドのsetName(文字列名){ this.name =名。 } int型getAgeのパブリック(){ 戻り値の年齢; } パブリック無効setAge(int型の年齢){ IF(年齢<0 ||年齢> 60)//例外がスローされます ( "年齢が無効に設定")新しいのRuntimeExceptionを投げる。 this.age =年齢; } パブリック無効printStudentAge(){ System.out.printlnは(名前+ "学生時代:"年齢+); } }
継承について:
私たちは、Javaは多重継承をサポートしていないことに注意する必要がある、である、このクラスは、親の存在を持つことができます。また、コンストラクタのJavaは、コンストラクタがプライベート変更がある場合、それは明らかコンストラクタではないが、継承されていない、クラスは他のクラスによって継承されていない、我々は最初のを見ることができ、特定の理由でJavaクラス初期化シーケンス:
-
初期化し、親クラスの静的メンバ変数と静的コードブロックを
-
初期化サブクラスの静的メンバ変数と静的コードブロック
-
初期親共通のメンバ変数とコードブロックは、親クラスのコンストラクタを行います
-
初期化サブクラス共通のメンバ変数とコードブロックは、コンストラクタが実行され、サブクラス
親クラスのコンストラクタがある場合には(プライベート)プライベートの時間のサブクラスが実行できない初期化クラスは継承できない理由、そして、それは、サブクラスが存在して許可しないことを意味する、説明しています。私たちは、サブクラスが生成された親クラスから派生していることを知って、それの特性は何サブクラス?
-
サブクラスはありません何のプライベート属性と親クラスのメソッドを
-
サブクラスは、ある独自のメソッドとプロパティを追加することができ、親クラスを拡張します
-
サブクラスのメソッドを再定義することができ、すなわち、親クラスのメソッドをカバー/リライタブル
サブクラスができるので、/書き換えの方法オーバーライドするとの方法オーバーロードを再定義する親クラスを、そして我々はそれを書き換える/方法を覆われているものを見てください。(実際には、これは、ウォームアップインタビュー対象の高周波)
カバー(@Override) :
呼ばれる書き換えをカバーすることを意味する親クラスのサブクラスと方法の関係、例えば、親クラスメソッドAを有する、方法Aのサブクラスが延びており、機能の豊富を加算します。その後、我々は、サブクラスのオーバーライドまたは言うことです上書き方法A、と言う方法は、親クラスを継承同じ戻り値の型、メソッド名、パラメータとパラメータの種類の数のサブクラスとメソッドを持っています。
デモを以下に示します。
com.companyパッケージ; パブリッククラスのメイン{ 公共の静的な無効メイン(文字列[] args){ 新しい新しい息子()と言う();. } } クラス親{ ます。public void言う(){ System.out.printlnは(「私は親でありますクラスメソッドを言う「); } } クラスは親{息子延び @Override 公共ボイド言う(){ するSystem.out.printlnを(」私は親クラス「オーバーライドメソッドサブクラスを言います); } }
多型について:
メソッドの多型をカバーし、過負荷状態にすることによって達成することができ、我々は最初の下で導入する方法であり、どのようなトップカバー導入方法オーバーロードされているものを。
過負荷:
過負荷クラス(親クラスを含む)は、同じ名前の異なる複数の方法を指し、これらの方法の異なるパラメータの数、タイプ、および順序は、オーバーロードされたメソッドを構成することができます。唯一の修飾子、戻り値、異なる例外がスローされた場合、これは同様に2つです。
com.companyパッケージ; パブリッククラスメイン{ 公共ボイド法1(文字列名、INT年齢){ するSystem.out.println(「」); } //注文方法の2つの異なるパラメータ、この方法は、過負荷に構成することができる 公共ボイド法1を(INT年齢、文字列名){ するSystem.out.println( ""); } // ----------------------------- ---------------- 公共ボイド方法2(文字列名){ するSystem.out.println(「」); } メソッドの異なるパラメータの//二つのタイプは、この方法は、再構成することができますキャリア 公共ボイド方法2(INT年齢){ するSystem.out.println( ""); } // ---------------------------- ----------------- ます。public void法3(文字列名){ System.out.printlnは( "「); } 二つの方法の異なるパラメータの//数は、この方法は、過負荷に構成してもよい 法3(年齢はint、int型NUM){公共ボイド のSystem.out.println(「」); } }
唯一のメソッドの戻り値が異なる場合、それは大きな負荷を構成することができますか?
回答ません:なし。我々はメソッドを呼び出し、そして時にはので、戻り値を気にしない、コンパイラは、メソッド名と、我々はメソッドを呼び出すパラメータに応じて、この時点で判断することはできません。
例:私たちは、次の2つのメソッドを定義する場合:
パブリック文字列試験(文字列のuserName){} 公共ボイド試験(文字列のuserName){}
私たちはどのように見て、サブクラスのオブジェクトの親オブジェクトポリモーフィズムを実現するために。
ビューの親オブジェクトポイントとして異なるサブクラス・オブジェクト、オブジェクトの異なるサブクラスの違いをマスク共通のコードを記述し、変化するニーズに適応するために、一般的なプログラミングを行うことができます。この操作の後、オブジェクトは、そのサブクラスの電流特性の異なる方法の操作で目的に応じて親クラスを割り当てることができます。
多型を有する可変基準オブジェクトは、として参照変数オブジェクトの異なる形を指すことができ、すなわち、物体は、サブクラスオブジェクトの親クラスとして使用されます。ここでは、次のように我々が導入された、上向きに推移し、下向きの移行に来ます:
アップキャスト:親へのサブクラスのオブジェクト、親クラスはインタフェースとすることができます。式:父F =新しい息子() ;父は息子のサブクラスは、親クラスまたはインタフェースです。
意気消沈:サブカテゴリーに分類親オブジェクト。式:ソンS =(SON)、F 。
上向きの移行は、我々が直接変えることができますが、私たちが持っていたときに、キャストをダウンキャストするとき。そして、ケースのように、親が強制下方遷移型前サブクラスオブジェクトに実際にしなければならない点父fは新しい子=ような方法で、すなわち(親クラス・オブジェクトが作成されています)。その性質上、父のオブジェクトであるため、親オブジェクトの面で父F =新しい父を(作成)このように、それは御子サブクラスのオブジェクトダウンキャスト変換することはできません、エラーを実行します。
この問題の概要:
タイトルでは、我々は、オブジェクト指向の詳細な説明されているカプセル化、継承やポリモーフィズムの3つのプロパティ。カバーとリロードに共通のインタビュー調査の点に加えて、差を作って説明します。リライト(カバレッジ)と簡単に混乱し、その名前でオーバーロードされたが、そのとおり書き換え(カバレッジ)と高周波テストサイトがインタビューを過負荷との間の差である、私はあなたが理解し、原則を覚えて来ることを願って。
(2)JDK、JREおよびJVMの違いとの接続は何?
次の3つの基本的な概念を要約することができます。
-
JDK(Javaの開発キット)は、開発キットであるJava開発環境のコアコンポーネントであり、コンパイルを提供し、デバッグおよびJavaプログラムに必要なすべてのツールを実行し、実行可能ファイルとバイナリファイル、プラットフォーム固有のソフトウェアです
-
JRE(Javaランタイム環境)は、Javaランタイム環境を指すJVMの実装であり、Javaプログラムを実行するためのプラットフォームを提供します。JREは、JVMが含まれていますが、開発ツールなどのJavaコンパイラ/デバッガが含まれていません。
-
JVM(Java仮想マシン)Java仮想マシンを意味し、我々はプログラムを実行すると、JVMは、特定のマシン・コードのバイトコードに変換するための責任があり、JVMはなど、メモリ管理/ガベージコレクションとセキュリティメカニズムを提供します
違いとの関係:
-
JDKには、Javaプログラムを開発するために使用される開発ツールキットで、およびJava JREは、ランタイム環境です
-
JDKおよびJREは、JVMに含まれています
-
JVMは、ハードウェアとオペレーティングシステムとは独立して、プラットフォームに依存しないJavaプログラミングの心臓部であり、これはJavaプログラムがいったん書かれ、多くの理由を実行することができています
解像度:
我々は、Java JDKが始まったのインストールから学んでいるので、これは、また、Javaの基礎の問題です。トップが言ったJavaプログラムは、プラットフォームに依存しない、多くの実行、追記を行うことができます。そして、クロスプラットフォームのJavaは、それを達成する方法ですか?
私たちは、JavaプログラムはJVM上でJava仮想マシン内で実行されている、知っています。JVMの違いは、基礎となるオペレーティング・システムおよびハードウェアを保護します。私はほとんどの学生こんにちはWordプログラムがテキストファイルに書き込まれ、その後、我々コンパイルの.javaは、javacのをファイル、の.classファイルを生成し、最後にjavaコマンドを通じての.classファイルを実行していると思います。実際には、これはつまり、実装のプロセスを説明し、その後、コンパイラのは初めての経験で、最初のJavaファイルはバイトコードの.classファイルにコンパイルして、特定のプラットフォーム上でマシンコードにJava仮想マシンインタプリタに引き渡さ。
プラットフォームに依存しない自然のもう一つの理由は、Java言語仕様は、基本的な動作を定義し、各プラットフォーム上でのデータ型の範囲が一致しています。
私たちは、やる簡単な結論を:
Javaはプラットフォームに依存しない達成するためにどのようにされているのですか?
-
JVMの違いは、基盤となるハードウェアとオペレーティングシステムを保護します
-
JVMのJava指向プログラミング、JVMの解釈を行うために、最初にコンパイルバイトコード・ファイル、およびマシンコードに
-
基本データ型の所定の範囲との行動を通じて、
Java言語は、言語をコンパイルまたは解釈されますか?
答えは:Javaの実装は、コンパイルと解釈の過程を経ている最初のコンパイル、解釈するだけでコンパイルまたはインタプリタ言語カテゴリに行かない、実行の言語を。
要約:
このセクションではあるのJavaの章の基礎の最初のセクションこのセクションの知識ポイントは、対象のウォームアップインタビューされているこれらのトピックをマスター、あなたは強固な基盤を残すことができます。