/ *
- Javaのオブジェクト指向
- 三つのメインライン
- 1、クラスのメンバーとクラスのJava
- クラスのメンバー:プロパティ、メソッド、コンストラクタ、コードブロック、内部クラス
- オブジェクト指向の2、三つの特徴
- カプセル化(カプセル化)、多型(多型)、継承(継承)、(抽象的抽象)
- 3.他のキーワード
- この、スーパー、静的、最終的に、抽象的、インタフェース、パッケージ、インポート
- など
* /
/ *
- オブジェクト指向(OOPオブジェクト指向プログラミング)とプロセス指向(POP手続き指向プログラミング)比較
- 図1に示すように、両方の思考、オブジェクト指向のプロセス指向、プロセス指向に対するものである、最小単位として機能するために機能的な挙動を強調、それを行う方法を考えます。
- オブジェクト指向、オブジェクトにカプセル化された機能は、誰によって考慮最小単位として、クラス/オブジェクトへのオブジェクト機能を強調しています。
- 図2に示すように、オブジェクト指向の論理的思考、ヒトの使用に重点用いる通常の方法および原理を考え、例えば抽象、分類、継承、重合、多型
- たとえば、子供の場合:「冷蔵庫に果物を入れた人。」達成するために
- プロセス指向:
- 1、冷蔵庫の扉を開きます
- 2、冷蔵庫に果物を拾います
- 3、冷蔵庫のドアを閉めます
- 第二に、オブジェクト指向
- 1、対象:ヒト - ステップ1:オープン(オブジェクト1:冷蔵庫)扉:ステップ2:ピックアップ(対象2:果物)、ステップ3:閉じる(オブジェクト1:冷蔵庫)ドア
- 図2に示すように、加工対象物1:冷蔵庫 - 機能1:開くために、機能2:ブロック
- 3は、対象物2:フルーツ - 機能1:ピックアップすることができます
- オブジェクトをインスタンス化した後、達成するために設計された適切な機能に関連するオブジェクトを呼び出します。
- オブジェクト指向設計
- 投入プロセス指向のオブジェクト指向の司令官の執行により、プログラマ
- 第二に、問題のあるステップのオブジェクト指向分析:
- 1、問題によると、問題のために、実世界のエンティティを選択します。
- 世界クラスの概念へと進化し、これらの属性や機能の特性および機能に関連する問題を解決しようとするエンティティから2、
- 3は、コンピュータ言語で記述された抽象エンティティは、コンピュータの世界では、プログラミング言語のいくつかの種類によって、すなわちクラスの定義の中に形成されています。
- コンピュータは、データ処理の種類と構造を識別するように構成することができます
- 4、コンピュータの世界オブジェクトにクラスのインスタンスは、オブジェクトは、コンピュータの世界の問題解決のための究極のツールです
- 例
- チケット導体の統計量
- 導体とチケットは、クラスすることができ
- アクションの統計的方法導体はチケットがデータの量であり、あります
- 一般的な用語は、クラスを作成することができ、クラス動詞メソッド
* /
/ *
- オブジェクト指向の二つの要素:
- クラス(クラス)とオブジェクト(オブジェクト)がコアオブジェクト指向の概念である、すべてのものは、すべてのオブジェクトであります
- クラス1は、物事のクラスの説明である抽象的な概念を定義することです
- 図2はまた、インスタンス(インスタンス)が知られているようなものが実際に存在する個々のオブジェクトです。
- 抽象=階級の人々、特定の個々のターゲット=
- オブジェクト指向プログラミングでは、クラスの設計に焦点を当てました
- デザインは、クラス設計の機能を持つオブジェクトに応じて、デザインクラスのクラスメンバーであります
* /
/ *
- クラスの異なる様々な機能から、世界のJavaコード
- 共通のクラスのメンバー:
- 図1に示すように、プロパティフィールド(翻訳領域またはフィールド)=に対応するクラスのメンバ変数
- 図2に示すように、メソッド(関数)クラスメンバーシップ=法(機能)に対応する動作
- Objectクラス=クラスは、クラスのインスタンス化インスタンスに作成されます=
- 現実の世界に対応し、人間は、年齢、身長などの属性を持って、実行しているの話や他の機能があります
- 構文クラス
- 修飾子クラスのクラス名{//検討する(必要な場合)修飾子、クラス名(かどうか、同じ名前、キーワードかどうか、鮮明な画像かどうか)
- プロパティの宣言; //(修飾子、プロパティの型、プロパティ名、初期値)
- 声明の方法; //(修飾子、戻り値の型、メソッド名、パラメータなど)
- }
- 説明:修飾子は、任意のパブリックアクセスに表現することができます
- private修飾子表現は、クラス内でのみアクセスすることができます
- {}クラスは、ボディラップを必要
- 例
- パブリッククラスPERSON1 {
- プライベートint型の年齢; //は、プライベート変数の年齢を宣言します
- 公共のボイドshowAge(intはI){//(メソッドshowAgeを宣言します)
-
age = i;
- }
- }
* /
/ *
- クラスとオブジェクトの使用(オブジェクト指向の実装)
- デザインクラスの1クラスを作成し、メンバー
- 2、オブジェクトのクラスを作成します
- 図3に示すように、オブジェクトの「オブジェクトプロパティ」または「オブジェクトメソッド」関連する機能を呼び出すこと
- 注:作成したクラスの複数のオブジェクト場合は、各オブジェクトは、プロパティ(非staticの場合)のクラスの独自のセットを持っています
- 別のメモリ空間、同じ次元アレイを初期化する値を持つプロパティの初期値の
- あなたは、オブジェクトのプロパティを変更した場合、オブジェクトの別のプロパティには影響しません
* /
/ *
- オブジェクトを作成し、使用:メモリは解決
- スタック(ヒープ)は、このメモリ領域の唯一の目的は、ここにメモリを割り当てるために、ほぼすべてのオブジェクトインスタンスの、オブジェクトのインスタンスが格納されています
- Java仮想マシンで説明するある:すべてのオブジェクトインスタンスおよびアレイは、ヒープ上に割り当てられなければなりません
- 図2は、典型的には、前記積層体(スタック)の、スタックは、仮想マシン、ローカル変数のスタックを格納するための仮想マシン、ローカル変数テーブル記憶あります
- コンパイラ知られている様々な基本データ型(ブール、バイト、文字、ショート、ロング、フロート、ダブル)の長さ、
- オブジェクト参照(参照タイプは、オブジェクト自体が、ヒープメモリ内の最初のターゲットアドレスと同一ではありません)。メソッドの実装後、自動解除
- そのようなコードコンパイラとして3、メソッド領域(方法エリア)、仮想マシンを格納するためのクラス情報がロードされた、定数、静的変数、リアルタイムデータ
* /
package com.atguigu.contact;
public class Object1 {
public static void main(String[] args) {//测试类中创建main方法作为入口
Person people = new Person();//实例化Person类
//调用属性格式 :对象.属性
people.name = "john";
people.age = 18;
people.isMarried = false;
people.gender = '男';//调用属性赋值
//调用方法格式 :对象.方法
people.eat();
people.talk();
people.sleep();
people.work();
System.out.println(people.display(1));//调用方法输出
Person1 people1 = new Person1();
//调用构造器格式 :对象.构造器(参数)
people1.Person("Tom",30, false);//调用构造器赋值
System.out.println(people1.display(2));//赋值后调用方法输出
//新创建一个对象,看属性的初始化值
Person people2 = new Person();//方法内,局部变量
System.out.println(people2.name);//null
System.out.println(people2.age);//0
System.out.println(people2.gender);//空值
System.out.println(people2.isMarried);//false
//
Person people3 = new Person();
people3 = people;
people3.age = 10;
System.out.println(people3.name);//输出john
System.out.println(people.age);//输出10,与数组类似,直接赋值与复制不同
//相当于将people 的地址赋值给people3,指向的是同一个内存空间。
}
}
class Person{
String name;
int age;
char gender;
boolean isMarried;//属性声明部分,成员变量
public void eat() {//没有返回值需加 void
System.out.println(name + "吃了一顿饭");
}
public void talk() {
System.out.println(name + "唠了一会嗑");
}
public void sleep() {
System.out.println(name + "睡了一会觉");
}
public void work() {
System.out.println(name + "干了一会活");
}
public String display(int index) {//可以在括号里定义变量,在调用时赋值使用,形参,局部变量
return (index + "号人物名字是:" + name + " 年龄是:" + age + " 性别是:" + gender + " 是否已婚:" + isMarried);
}//方法声明部分
}
class Person1{
//属性
String name;
boolean isMarried;
int age;
//构造器
public void Person() {}
public void Person(String n,int num,boolean mark) {//形参,局部变量
name = n;
isMarried = mark;
age = num;//构造器内部变量,局部变量
}
//方法
public void walk () {
System.out.println(name + "向前走了一段路");
}
public String display(int index) {
return index + "号人物名字是:" + name + " 年龄是:" + age + " 是否结婚" + isMarried;
}
//代码块
{
name = "hank";
isMarried = true;
age = 20;//代码块内,局部变量
}
//内部类
class pet{
String name;
float weight;
}
}