面向對象是相對面向過程而言java
面向對象和麪向過程是一種思想android
面向過程安全
強調的功能行爲微信
面向對象函數
將功能封裝進對象,強調具有了功能的對象.學習
面向對象是基於面向過程的.this
不懂spa
//面向對象:三個特徵:封裝,繼承,多態. //之後開發:其實就是找對象試用,沒有對象,就建立一個對象 //找對象,簡歷對象,使用對象,維護對象的關係 /* 類和對象的關係. 現實生活中的對象:張三 李四. 想要描述:提取對象中共性內容,對具體的抽象. 描述時:這些對象的共性有:姓名,年齡,性別,學習Java功能. 映射到Java中,描述就是class定義的類. 具體對象就是對應Java在堆內存中用new創建實體. 類就是:對現實生活中事物的描述. 對象:就是這類事物,實實在在存在個體 */ //需求:描述汽車(顏色,輪胎數).描述事物其實就是在描述事物的屬性和行爲. //屬性對應是類中變量,行爲對應的類中的函數(方法) //其實定義,就是在描述事物,就是在定義屬性和行爲.屬性和行爲共同成爲類中的成員(成員變量和成員方法) class Car { //描述顏色 String color = "顏色"; //描述輪胎數 int num = 4; //運行行爲 void run() { System.out.println(color+".."+num); } } class charDemo { public static void main(String[] args) { //生產汽車.在Java中經過操做符來完成. //其實就是在堆內存產生一個實體. Car c = new Car();//c就是一個類類型變量.記住:類類型變量指向對象. //需求:將已有的汽車的顏色改爲藍色,指揮對象作使用.在java指揮方式是:對象.對象成員 c.color = "blue"; c.run(); Car c1 = new Car(); c1.run();//red 4; } }
/*code
成員變量和局部變量.對象
做用範圍.
成員變量做用域整個類中.
局部變量做用於函數中,或者語句中
在內存中的位置
成員變量:在堆內存中,由於對象的存在,纔在內存中存在
局部變量:存在棧內存中
*/
/
/面向對象:三個特徵:封裝,繼承,多態. //之後開發:其實就是找對象試用,沒有對象,就建立一個對象 //找對象,簡歷對象,使用對象,維護對象的關係 /* 類和對象的關係. 現實生活中的對象:張三 李四. 想要描述:提取對象中共性內容,對具體的抽象. 描述時:這些對象的共性有:姓名,年齡,性別,學習Java功能. 映射到Java中,描述就是class定義的類. 具體對象就是對應Java在堆內存中用new創建實體. 類就是:對現實生活中事物的描述. 對象:就是這類事物,實實在在存在個體 */ //需求:描述汽車(顏色,輪胎數).描述事物其實就是在描述事物的屬性和行爲. //屬性對應是類中變量,行爲對應的類中的函數(方法) //其實定義,就是在描述事物,就是在定義屬性和行爲.屬性和行爲共同成爲類中的成員(成員變量和成員方法) /* 成員變量和局部變量. 做用範圍. 成員變量做用域整個類中. 局部變量做用於函數中,或者語句中 在內存中的位置 成員變量:在堆內存中,由於對象的存在,纔在內存中存在 局部變量:存在棧內存中 */ class Car { //描述顏色 String color = "顏色"; //描述輪胎數 int num = 4; //運行行爲 void run() { System.out.println(color+".."+num); } } class charDemo { public static void main(String[] args) { //生產汽車.在Java中經過操做符來完成. //其實就是在堆內存產生一個實體. Car c = new Car();//c就是一個類類型變量.記住:類類型變量指向對象. //需求:將已有的汽車的顏色改爲藍色,指揮對象作使用.在java指揮方式是:對象.對象成員 c.color = "blue"; c.run(); Car c1 = new Car(); c1.run();//red 4; //Car c = new Car(); // c.num = 5;//這兩語句能夠簡化 new Car().num = 5;//重新的對象修改num new Car().color = "blue";//重新的對象修改color new Car().run();//重新的對象執行run //因此跟以前的沒有任何關係 Car c new Car(); c.run(); c.num = 4; new Car().run(); //匿名對象使用方式一:當對對象的方法只調用一次時,能夠試用匿名對象來完成. //若是對一個對象進行多個成員調用,必須給這個對象起個名字 //匿名對象私用方式二:能夠將匿名對象做爲實際參數進行傳遞 Car q = new Car(); show(q); show(new Car()); } public static void show(Car c) { c.num = 3; c.color = "black"; c.run(); } }
封裝:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式.
好處:
將變化隔離
便於使用
提升重用性
提升安全性
封裝原則:
將不須要對外提供的內容給隱藏起來.
把屬性都隱藏,提供公共方法對其訪問.
/* private: 私有,權限修飾符:用戶修飾類中的成員(成員變量,成員函數) 私有隻在本類中有效. 將age私有化之後,類之外即便創建了對象也不能直接訪問 可是人應該有年齡,就須要在Person類中提供對應訪問方式 注意: 私有僅僅是封裝的一種表現形式 之因此對外提供訪問方式,就是由於能夠在訪問方式中加入邏輯判斷等語句,提升代碼健壯性. */ class Person { private int age; public void setAge(int a) { if(a>0 & a<130) { age=a; speak(); } else System.out.println("非法年齡值"); } public int getAge() { return age; } void speak() { System.out.println("age="+age); } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); //p.age = 20; p.setAge(220); //p.speak(); } }
/* 對象一創建就會調用與之對應的構造函數. 構造函數的做用:能夠用於給對象進行初始化. 構造函數的做用:能夠用於給對象進行初始化 構造函數的小細節: 當一個類中沒有定義構造函數時,那麼系統會默認給該類加入一個空參數的構造函數. 當在類中自定義了構造函數後,默認的構造函數就沒有了. 構造函數和通常函數在寫法上有不一樣. 在運行上也有不一樣. 構造函數是在對象一創建就運行,給對象初始化. 而通常方法是對象調用才執行,是給對象添加對象具有的功能 一個對象簡歷,構造函數只運行一次. 而通常方法能夠被該對象調用屢次. 何時定義構造函數呢? 當分析事物時,該事物存在具有一些特性或者行爲,那麼將這些內容定義在構造函數中 */ class Person { private String name; private int age; Person() { System.out.println("A:name"+name+",,age"+age); cry(); } Person(String n) { name = n; System.out.println("A:name"+name+",,age"+age); cry(); } public void setName(String n) { name = n; } public String getName() { return name; } Person(String n,int a) { name = n; age = a; System.out.println("A:name"+name+",,age"+age); cry(); } public void cry() { System.out.println("cry......"); } } class PersonDemo2 { public static void main(String[] args) { Person p1 = new Person(); p1.cry(); Person p2 = new Person("lyb"); p2.setName("bobo"); System.out.println(p2.getName()); Person p3 = new Person("lyb",20); } }
/* 構造代碼塊. 做用:給對象進行初始化. 對象一創建就運行,並且優先於構造函數執行. 和構造函數的區別: 構造代碼塊是給所用對象進行統一初始化. 而構造函數是給對應的對象初始化. 構造代碼塊中定義的是不一樣對象共性的初始化內容 */ { System.out.println("person code run"); }
添加好友
小額贊助
微信 |
支付寶 |