JAVA 學習模塊六: 面向對象

這裏寫圖片描述

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: 私有,是一個有權限修飾符。用於修飾成員。
私有的內容只在本類中有效。
注意: 私有僅僅是封裝的一種體現而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章