1.面向過程與面向對象
1.面向過程:強調的是過程,即動作。(c語言:以函數體現,然後對函數調用)
2.面向對象:強調的是對象(實體)。(將過程進行封裝)(c++,java,c#)
3.面向對象就是一種常見的思想,符合人們的思考習慣。
4.面向對像的出現將複雜問題簡單化,讓曾經在過程中的執行者變成了對象中的指揮者。
5.面向對象的三個特徵: 封裝、繼承、多態
2. java 描述對象,通過類的形式實現的
1.描述通常是關注兩個方面:屬性、行爲。
2.對象就是該類事物實實在在存在的個體。
3.類與對象之間的關係:
類: 事物的描述
對象:該類事物的實例,在 java 中通過類來創建的。
先有類後有對象。
/*
描述小汽車:
分析:
1.屬性:輪胎數、顏色
2.行爲:運行
定義類其實就是在定義類中的成員:
成員: 成員變量 即 屬性
成員函數 即 行爲
*/
class Car
{
int num;
String color;
void run()
{
System.out.println("run");
}
}
class CarDemo
{
public static void main(String[] args)
{
//在計算機中創建一個car實例。通過new 關鍵字。
Car c = new Car(); //c 就是一個 類類型的引用變量,指向了該類的對象。
c.run();//要使用對象中的內容可以通過 對象。成員的形式完成調用
}
}
成員變量也可以賦值,顯示初始化過程。
class Car
{
int num;
String color;
void run()
{
System.out.println(num+"run"+ color);
}
}
class CarDemo
{
public static void main(String[] args)
{
//在計算機中創建一個car實例。通過new 關鍵字。
Car c1 = new Car(); //c 就是一個 類類型的引用變量,指向了該類的對象。
c1.num =4;
c1.color = "red";
Car c2 = new Car(); //c 就是一個 類類型的引用變量,指向了該類的對象。
c2.num =4;
c2.color = "red";
Car c3 = new Car();
show(c3); //等價
}
public static void show(Car c)//類類型一定指向對象,要麼爲空null
{
c.num= 4;
c.color="red";
System.out.println(c.num+"run" + c.color);
}
}
3.成員變量和局部變量
區別一:
成員變量定義在類中,整個類中都可以訪問。
函數變量定義在函數,語句,局部代碼塊中,只在所屬的區域有效
區別二:
成員變量存在於堆內存的對象中,局部變量存放於棧內存的方法中。
區別三:
成員變量隨着對象的創建而存在,隨着對象的消失而消失。
局部變量隨着所屬區域的執行而存在,隨着所屬區域的結束而釋放。
區別四:
成員變量有默認初始化值;局部變量沒有。
4.匿名對象(沒有名字的對象)
1.當對象對方法僅一次調用的時候就可以簡化爲匿名對象。
new car().run();
5.封裝(隱藏對象的屬性和實現細節)
class Person
{
int age;
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.age = -20;
p.speak();
}
}
class Person
{
private int age; //只在本類中有效
public void hha(int a)
{ if(a>0 && a<130)
{
age=a;
}
else
System.out.println("cuo");
}
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.hha = -20;
p.speak();
}
}
封裝:
1,將變化隔離
2、便於使用
3、提高重用性
4、
class Person
{
private int age; //只在本類中有效
// public void hha(int a)
// { if(a>0 && a<130)
// {
// age=a;
// }
// else
// System.out.println("cuo");
// }
public void setage(int a)
{
age = a;
}
public void getage()
{
return age;
}
void speak()
{
System.out.println("age="+age);
}
}
class CarDemo
{
public static void main(String[] args)
{
Person p = new Person();
p.setage(-20);
p.speak();
}
}
private: 私有,是一個有權限修飾符。用於修飾成員。
私有的內容只在本類中有效。
注意: 私有僅僅是封裝的一種體現而已。