如何開汽車(事務比較簡單,可以用線性的思維去解決)
面向過程 物件導向
1.踩離合 駕駛員
2.掛擋 汽車
3.踩油門,放離合 駕駛員開汽車!
4.開了 car.start();
如何製造汽車(事物比較複雜使用簡單的線性思維無法解決)
面向過程 物件導向
1.造車輪? 車輪:
2.造發動機? 買橡膠到馬來西亞找到橡膠廠**買用船運到國內
3.造車皮? 造磨具:將橡膠放入模具出車輪
4.擋風玻璃?發動機
很難決定上面這些步驟之間的關係! 將上面造出的東西,組裝,汽車造車
先造發動機還是先早車輪?
物件和類的概念
物件:是具體的事物
類:是對物件的抽象(抽象 抽出象的部分)
先有具體的物件,然後抽象各個物件之間公共的部分,歸納出類,通過類再認識其他物件
天使類如何歸納?-->善於歸納總結
抽象出他們共同的部分:
1.帶翅膀(帶翅膀的不一定是天使,也可能是鳥人)
2.女孩
3.善良
屬性--->物件具有的各種特徵
每個物件的每個屬性都擁有特定值
行為/動作-->方法
物件:用來描述客觀事物的乙個實體,由一組屬性和方法構成
1.屬性 field 或者叫成員變數
2.屬性用於定義該類或該類物件包含的資料或者靜態屬性
3.屬性作用範圍是整個類體
4.在定義成員變數時,可以對其初始化,如果不對其初始化,j**a使用預設的值對其初始化
數值: 0 ,0.0
char:\u
boolean:false
所有引用型別:null
5.屬性定義格式:
[修飾符] 屬性型別 屬性名 = [預設值]
5.1屬性型別:
public,protected,private,static,final
5.2 屬性名:
可以是任何型別:基本型別和引用型別
5.3 預設值
合法識別符號即可,首字母小寫,駝峰原則
物件導向中,整個程式的基本單位是類,方法是從屬於物件的
方法定義格式:
【修飾符】 方法返回值型別 方法名(形參列表)
j**a中方法引數傳遞的是:值傳遞
所有j**a程式都以類class為組織單元
關鍵字class定義自定義的資料型別
public class helloworld
}定義乙個類的步驟
1.定義類名
2.編寫類的屬性
3.編寫類的方法
1.使用new關鍵字來建立物件
classname object = new classname ();
//建立物件
student student = new student();
//使用屬性---->物件名.屬性/物件名.方法名()
system.out.println(student.name);
system.out.println(student.age);
system.out.println(student.stunumber);
//呼叫方法
1.定義管理員類
實現思路:
定義管理員類administrator
定義其屬性和方法
定義測試類testadministrator
建立兩個管理員類的物件,並輸出他們的資訊
2.更改管理員密碼
2.1需求說明:
--輸入舊的使用者名稱和密碼,如果正確,方有權更新
--從鍵盤獲取新的密碼,進行更新
2.2 實現思路
--建立管理員類的物件
--利用while實現迴圈執行
administrator.j**a
public class administratortestadministrator.j**apublic administrator(string loginname, string password)
public string getloginname()
public void setloginname(string loginname)
public string getpassword()
public void setpassword(string password)
public void print()}
import j**a.util.scanner;public class testadministrator }
}
import j**a.util.scanner;普通**塊:定義在方法中,使用{}括起來的**叫做普通**塊public class stringdemo }
構造**塊:定義在類中使用{}括起來的**叫做構造**塊
注意:1.每次**執行的時候會將構造**塊中的**新增到構造方法的前面
2.構造**塊中的**會新增到每乙個構造方法中,當使用this(引數)的時候不會新增
靜態**塊:使用static{}括起來的**叫做靜態**塊,在程式載入的時候優先執行
資料庫鏈結等其他提前準備好的**會放到static中
同步**塊:在多執行緒的時候會使用,用來給共享空間進行加鎖操作
靜態**塊》構造**塊(建立物件的時候才會用到)>普通**塊
為了解決類之間的重名問題
2.為了便於管理類,適合的類位於合適的包
通常是類第一句非注釋性語句
包名:網域名稱倒著寫即可,再加上模組名,並與內部管理類
--寫專案時都 要加包,不要使用預設包
--com.gao和com.gao.car,這兩個包沒有包含關係,是兩個完全獨立的包,只是邏輯上看起來後者是前者的一部分
j**a.lang-->不需要手動匯入,自動載入
包含一些j**a語言的核心類,如string,math,system,thread,提供常用功能
j**a.awt
包含構成抽象視窗工具類abstract window toolkits的多個類,這些類被用於構建和管理應用程式的圖形使用者介面gui
j**a.net
包含執行與網路相關操作的類
j**a.io
包含能提供多種輸出輸出功能的類
j**a.util
包含一些實用工具類,如定義系統特性,實用與日期日曆相關的函式
public class packagedemo當需要使用某個類的多個方法的時候,同時又不想頻繁寫該類的名稱,此時可以使用靜態導包}
//import j**a.lang.math.*;import static j**a.lang.math.*;
public class importdemo }
物件導向程式設計 1 物件導向程式設計初步認知
其實,不需要搞明白面向過程程式設計和物件導向程式設計的區別,只需要明白物件導向的特點 變數必須有家長,萬事家長做主.慢慢就能理解物件導向的優劣.1.變數有所屬.常規方式 var a 1 let b 1 2 const c function name console.log a,b,c 常規的變數申明...
C 物件導向程式設計初步
1,使用const 指標 const int pone 指向整型常量的指標,指向的值不能修改 int const ptwo 指向整型的常量指標,指向的值可以修改,但該指標不能再指向其他變數 const int const pthree 指向整型常量的常量指標 summarize summary 訪問...
3 物件導向程式設計
基礎型別,如byte int bool float等 復合型別,如陣列 結構體 指標等 可以指向任意物件的型別 any型別 值語義和引用語義 物件導向,即所有具備物件導向特徵 比如成員方法 的型別 介面 type integer int func a integer less b integer b...