黑馬程序員.bobo.DAY.5

------- android培訓java培訓、期待與您交流! ----------

DAY-5

1.面向對象(概述)

1.1理解面向對象

面向對象是相對面向過程而言java

面向對象和麪向過程是一種思想android

面向過程安全

強調的功能行爲微信

面向對象函數

將功能封裝進對象,強調具有了功能的對象.學習

面向對象是基於面向過程的.this

2.面向對象(舉例)

不懂spa

3.面向對象(類與對象的關係)

//面向對象:三個特徵:封裝,繼承,多態.
//之後開發:其實就是找對象試用,沒有對象,就建立一個對象
//找對象,簡歷對象,使用對象,維護對象的關係
/*
類和對象的關係.
現實生活中的對象:張三 李四.
想要描述:提取對象中共性內容,對具體的抽象.
描述時:這些對象的共性有:姓名,年齡,性別,學習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;
}
}



4.面向對象(成員變量與局部變量)

/*code

成員變量和局部變量.對象

做用範圍.

成員變量做用域整個類中.

局部變量做用於函數中,或者語句中

在內存中的位置

成員變量:在堆內存中,由於對象的存在,纔在內存中存在

局部變量:存在棧內存中

*/

 

5.面向對象(匿名對象的應用)

/

/面向對象:三個特徵:封裝,繼承,多態.
//之後開發:其實就是找對象試用,沒有對象,就建立一個對象
//找對象,簡歷對象,使用對象,維護對象的關係
/*
類和對象的關係.
現實生活中的對象:張三 李四.
想要描述:提取對象中共性內容,對具體的抽象.
描述時:這些對象的共性有:姓名,年齡,性別,學習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();
}
}


 

6.面向對象(封裝概述)

6.1封裝(Encapsulation)

封裝:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式.

好處:

將變化隔離

便於使用

提升重用性

提升安全性

封裝原則:

將不須要對外提供的內容給隱藏起來.

把屬性都隱藏,提供公共方法對其訪問.

7.面對對象(封裝private)

/*
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();
}
}



8.面向對象(構造函數)

/*
對象一創建就會調用與之對應的構造函數.
構造函數的做用:能夠用於給對象進行初始化.
構造函數的做用:能夠用於給對象進行初始化
 
構造函數的小細節:
當一個類中沒有定義構造函數時,那麼系統會默認給該類加入一個空參數的構造函數.
 
當在類中自定義了構造函數後,默認的構造函數就沒有了.
構造函數和通常函數在寫法上有不一樣.
 
在運行上也有不一樣.
構造函數是在對象一創建就運行,給對象初始化.
而通常方法是對象調用才執行,是給對象添加對象具有的功能
 
一個對象簡歷,構造函數只運行一次.
而通常方法能夠被該對象調用屢次.
何時定義構造函數呢?
當分析事物時,該事物存在具有一些特性或者行爲,那麼將這些內容定義在構造函數中
 
*/
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);
 
}
}



9.面向對象(構造代碼塊)

/*
構造代碼塊.
做用:給對象進行初始化.
對象一創建就運行,並且優先於構造函數執行.
和構造函數的區別:
構造代碼塊是給所用對象進行統一初始化.
而構造函數是給對應的對象初始化.
構造代碼塊中定義的是不一樣對象共性的初始化內容
*/
{
System.out.println("person code run");
}



10.面向對象(this關鍵字)

 

11.面向對象(this關鍵字的應用)

添加好友

小額贊助

微信
支付寶

相關文章
相關標籤/搜索