JAvaプログラミングオブジェクト向け思想:パッケージ、継承、マルチステート

7239 ワード

1:Javaでのパラメータ伝達の問題.
基本タイプ:形式パラメータの変更は実際のパラメータに影響しません.
参照タイプ:形式パラメータの変更は、実際のパラメータに直接影響します.
 
2:オブジェクト向け
(1)対象向け:プロセス向けの考え方である.
プロシージャ向け:関数に基づいて実装プロシージャに注目します.
オブジェクト向け:オブジェクトベースで、実装結果に注目します.
(2)対象に対する考え方の特徴:
A:人々の思考習慣に合った考えです.
B:複雑なことを簡単にしました.
C:私たちを実行者から指揮者に変えました.
 
例:
パソコンを買う.
洗濯します.
旅行する.
象を冷蔵庫に入れる.
    :
		A:     
		B:    
		C:     

		    :

		class    
		{
			public static void main(String[] args)
			{
				open();
				in();
				close();
			}

			public static void open()
			{
				System.out.println("     ");
			}

			public static void in()
			{
				System.out.println("    ");
			}

			public static void close()
			{
				System.out.println("     ");
			}
		}

	    :
		                   ?
		A:            ?
		B:           ?
		C:          ?

		  :
		A:   ?	     。--	UML(      )
			  
			  
			  
		B:       ?
			  :
				in()
			  :
				open()
				close()
			  :
				main()
		C:  
			             。

		    :

		class   
		{
			public void in()
			{
				System.out.println("    ");
			}
		}

		class   
		{
			public void open()
			{
				System.out.println("     ");
			}

			public void close()
			{
				System.out.println("     ");
			}
		}

		class    
		{
			public static void main(String[] args)
			{
				    .open();
				    .in();
				    .close();
			}
		}

(3)物事はどのように表現されているのでしょうか.
A:属性の特徴
B:行動にはどのような機能がありますか.
(4)クラスとオブジェクトの関係:
物事をクラスに変換する:
A:メンバー変数
クラスに定義され、メソッド外です.
B:メンバーメソッド
以前との違いはstaticを外すことです.
 
クラス:関連する属性と動作の集合です.抽象的な概念です.
対象:ある物事の具体的な存在、具体的な表現形式である.
 
例:
クラス:学生
対象:李四、張三
(5)ケース:
A:学生クラス
B:携帯電話類
C:自動車類
(6)どのように使うか.
A:オブジェクトの作成
書式:
クラス名 オブジェクト名 = new クラス名(); 
B:メンバー変数とメンバーメソッドの使用
オブジェクト名.メンバー変数
オブジェクト名.メンバーメソッド
 
 
1:メンバー変数とローカル変数の違い
(1)位置の違いを定義する:
≪メンバー変数|Member Variables|oraolap≫:クラス、メソッドの外で定義します.
ローカル変数:メソッドに定義するか、メソッド宣言に定義します.
(2)初期化値の違い:
メンバー変数:デフォルトの初期化値があります.
ローカル変数:デフォルトの初期化値はありません.使用するには、まず値を付けなければなりません.
(3)保管場所の違い:
メンバー変数:スタックに格納されます.
ローカル変数:スタックに格納されます.
(4)ライフサイクルの違い:
≪メンバー変数|Member Variables|oem_src≫:オブジェクトの作成に伴って存在します.オブジェクトが消えるにつれて消える.
ローカル変数:メソッドの呼び出しに伴って存在し、メソッドの呼び出しが完了するにつれて消失します.
 
2:パッケージ(理解)
(1)実装の詳細を非表示にし,共通のアクセス方式を提供する.
類、方法などは実はすべてパッケージの具体的な体現です.
(2)privateキーワード
A:メンバー変数とメンバーメソッドを修飾するために使用します.
B:修飾されたコンテンツは他のクラスではアクセスできません.
(3)一般的な応用:(把握)
クラス内のすべてのメンバー変数はプライベートであり、対応するget/setメソッドが与えられます.
    :

class Student

{

private String name;

private int age;

 

public Student(){}

 

public Student(String name,int age)

{

this.name = name;

this.age = age;

}

 

public void setName(String name)

{

this.name = name;

}

 

public String getName()

{

return name;

}

 

public void setAge(int age)

{

this.age = age;

}

 

public int getAge()

{

return age;

}

}

 
3:構造方法(把握)
(1)様式及び特徴
書式:
アクセス修飾子クラス名(パラメータ...){}
 
アクセス権修飾子:
public,private
特徴:
A:メソッド名とクラス名が同じ
B:戻り値タイプがありません
C:具体的な戻り値がない
(2)注意事項:
A:構築方法をあげないと、jvmは自動的に無参構築方法をあげます.
B:構築方法を指定すると、jvmは無パラメトリック構築方法を提供しません.
  このとき、無参構造の方法を使用するには、自分で提供するしかありません.
 
  推奨:無パラメトリック構造方法は常に手動で提供されます.
 
4:継承(把握)
(1)複数のクラスの中で同じ属性と行為を抽出して一つのクラスにカプセル化し,
   そして新しいクラスを作るときは、最初から始める必要はなく、さっき定義したクラスを継承すればいいのです.
(2)メリット:
A:コードの多重化を向上させる.
B:クラスとクラスの関係を生み出すのは、多態の前提です.
(3)継承はいつ使いますか.
A:クラス間に存在する場合:
is a の関係では、継承を使用することも考えられます.
B:一部の機能を継承するために、継承を使用しないでください.
(4)継承の特徴:
A:Javaは単一継承のみをサポートし、マルチ継承はサポートしません.
どうして?マルチ継承がサポートされている場合は、呼び出しが不明確な問題があります.
B:Javaは多層(再)継承をサポートします.
(5)superとthisの違いは?
A:superは、親クラスのストレージスペースIDを表すキーワードです.(父の引用と理解できる)
B:thisと似ています
a:メンバー変数
this.変数--このクラスの
super.変数--親
b:構築方法
this(...)--このクラスの
super(...)--親
c:メンバーメソッド
this.メソッド名()--このクラスの
super.メソッド名()--親
(6)子の親におけるメンバー変数の使用方法:
A:名前が違いますが、これは簡単すぎます.
B:名前は同じで、サブクラスオブジェクトの使用時:
サブクラスのローカル範囲を先に探します
サブクラスメンバー範囲の再検索
最後の親メンバー範囲の検索
(7)子の親のメンバーメソッドの使用方法:
A:名前が違いますが、これは簡単すぎます.
B:名前は同じで、サブクラスオブジェクトの使用時:
まずサブクラスを探します
親を探して
C:書き換え方法
サブクラスで、メソッド宣言(修飾子、戻り値、メソッド名、パラメータリスト)が同じ場合.
 
注意事項:
a:親クラスのプライベートメソッドは書き換えられません
b:サブクラスメソッドのアクセス権限は、親のアクセス権限以上である必要があります.
c:静的は静的のみ書き換えられます.(これは、静的がクラスに関連しているため、計算できません)
(8)子の親における構築方法の使い方:
A:サブクラスの初期化中は、まず戻って親の初期化動作を実行します.
   サブクラスの構築方法にはデフォルトでsuper()があるからです.
どうして?子クラスは親クラスのメンバー変数を使用します.この初期化は、子クラスの初期化前に完了する必要があります.
したがって、子クラスの初期化では、親クラスの初期化が先に実行されます.
B:親に無パラメトリック構築方法がない場合
A:superを使用して親クラスのパラメータ付き構造を呼び出します.推薦方式.
B:this呼び出し自体の他の構造を使用します.
3:コードブロック(面接問題)
(1)実行手順:
スタティツクコードブロック --> コードブロックの構築 --> 構築方法
(2)注意事項:
静的コードブロックは1回のみ実行されます
 
5:多態(把握)
(1)対象が異なる時点で現れる異なる状態.
例:水(氷、水、水蒸気)
(2)多態の前提
A:継承または実現関係が必要です.
B:書き直す方法があります.
C:親参照または親インタフェース参照が子オブジェクトを指すようにします.
 
注意:多態には3つの体現形式がある.
クラスマルチステート
抽象クラスマルチステート
インタフェースマルチステート
(3)マルチステートのメンバーの特徴:
A:メンバー変数
コンパイルは左を見て、実行は左を見てください.
B:メンバーメソッド
コンパイルは左を見て、実行は右を見ます.
 
どうして?メソッドには書き換えがあるため、変数はありません.
 
例:孔子はお父さんを装う.
(4)多態の弊害:
親(インタフェース)リファレンスでは、子クラス固有の機能は使用できません.
この弊害を解決するために、私たちは下に転換する必要があります.
 
Fu f = new Zi(); //アップシフト
Zi z = (Zi)f; //ダウンシフト
 
Zi z = new Zi();
(5)マルチステートのメリット:
コードの拡張性とメンテナンス性を向上させることができます.
 
6:抽象クラス(理解)
(1)複数のクラスに同じメソッド宣言が存在し,メソッドボディが異なる場合,メソッド宣言のみを抽出することができる.
   メソッドがメソッド宣言のみでメソッドボディがない場合、このメソッドは抽象的に修飾されなければなりません.
   1つのクラスに抽象メソッドがある場合は、このクラスを抽象クラスとして定義する必要があります.
(2)抽象クラスの特徴
A:抽象クラスと抽象メソッドはabstract修飾を使用する必要があります
B:抽象クラスはインスタンス化できません
C:抽象クラスには抽象的な方法があり、サブクラスのインスタンス化に使用される
D:クラスが抽象クラスであれば、そのサブクラスを継承します.
抽象クラスか.
すべての抽象的な方法を書き換えるか.
(3)抽象クラスのメンバの特徴
A:メンバー変数は変数でも定数でも構いません
B:構造方法は構造方法があります
C:メンバーメソッドは抽象メソッドであっても非抽象メソッドであってもよい
(4)抽象クラスのいくつかの小さな問題
A:抽象クラスはインスタンス化できないのに、なぜ構造があるのですか.
サブクラスのインスタンス化に使用します.
B:一つのクラスに抽象的な方法がないのに、どうして抽象的なクラスと定義しますか.
インスタンス化されたくない.
C:abstractはどのキーワードと共存できません.
final
private
static
(5)ケース:
先生のケース
学生のケース
 
7:インタフェース(理解)
(1)抽象クラスのメソッドが抽象的であればjavaは
   より抽象的な表現形式:インタフェース.
   インタフェース:interface
   実装:implements
 
   書式:
interface インタフェース名{}
 
class クラス名 implements インタフェース名 {}
(2)インタフェースの特徴:
A:インタフェースはインスタンス化できません.
B:クラスがインタフェースを実装した場合:
抽象クラスか.
インタフェース内のすべての方法を実装するか、または実装します.
(3)インタフェースのメンバー特徴:
A:メンバー変数は定数のみです.デフォルトの修飾子 public static final
B:メンバーメソッドは抽象メソッドのみです.デフォルトの修飾子 public abstract
 
推奨:修飾子は常に手動で与えられます.
(4)インタフェースの思想特徴:
A:露出ルール
B:機能の拡張です
C:結合度を下げる
結合けつごう:クラスとクラスの関係クラスとクラスの関係
集約:自分で何かを完成させる能力
 
高凝集、低結合.
D:インタフェースは複数実装可能である.
(5)クラス、インタフェースの関係
A:クラスとクラス
継承関係は、単に継承するだけで、多層継承することができます.
B:クラスとインタフェース
関係を実現するには、単に実現してもよいし、多く実現してもよい.
1つのクラスを継承しながら複数のインタフェースを実装することもできます.
C:インタフェースとインタフェース
継承関係は、単独で継承してもよいし、複数で継承してもよい.