1. 程式人生 > 實用技巧 >java第三天---類和物件

java第三天---類和物件

一、概述

java的核心思想:面向物件的程式設計

  程式設計有兩種思想,面向過程和麵向物件,現在開發幾乎全是面向物件,這不是說面向物件開發比面向過程更簡單,其實面向物件開發的更復雜,那為什麼還要用面向物件呢?

  首先明白何為面向過程,何為面向物件。面向過程就是一切為實現功能為目標,實現完了就結束了,基本不考慮後期的維護難度。面向物件,更多的是考慮子模組的設計,每個功能模組都單獨存在,要考慮重用性和可維護性,一切以結果為目標,忽略開發過程。

  再簡單的說:你在餐館點餐,要份辣子雞,你就是面向物件,只說目的。廚師做出辣子雞就是面向過程。

  在開發程式時,並不是說用面向物件後,就不用面向過程,這兩個是同時存在的。當你將一個功能獨立出來設計,隨處呼叫的模組時,就是面向物件。當你在實現這個獨立出來的功能時,就是面向過程的。

  在面向物件設計開發時,就要去封裝一個一個的功能模組,然後在每個需要的地方去呼叫,或者子類的繼承,多型。所以我們學習面向過程就是學習如何去“抽象"出類,然後進行封裝,然後使用。概括就是:封裝、繼承、多型,或者再加上一個抽象

  我認為面向物件就像現在工業的模組化生產,像汽車,由各個零件的模型做出很多零件,再把一套成型的零件來組裝一輛汽車。如果需要更改車型,只要改模型,就能生產出很多一樣的零件。  

  具體解釋:

    封裝:保護功能模組的功能不被破壞

    繼承:擴充套件原有的功能

    多型:一個類的功能可以呈現多種不同的結果,一個印表機,既能列印黑白,也能列印彩色。

  面向物件的開發過程:

    面向物件分析(OOA)、面向物件設計(OOD)、面向物件程式設計(OOP)

二、類和物件

  類和物件是整個面向物件的基本組成單元。

  封裝出來就是一個一個類,類是對現實世界上存在的東西的抽象形容。類裡邊有屬性,有功能方法。

   物件是對類的具體描述,描述出來一個獨立的個體,每個物件都有自己的屬性和行為(功能方法)。

   類不能直接使用,物件可以直接使用。

  例如:人是一個物種,是一個類。有名字,年齡,身高,性別等屬性。也有吃飯,走路,睡覺這些行為。但是這不是一個具體的,只是一類描述,當我們要使用類的某個功能是,就要例項化一個物件,這個物件是實實在在的能幹事的。比如老師對班裡的學生說,唱一個歌,但是大家不知道具體誰唱,這時老師說,小明來唱首歌,這就具體到了一個實實在在的物件。

   類的格式:

public class Person {
    String name;
    int age;
    int height;
    String sex;    //這裡全都是成員變數

    public   Person(){};   //構造方法

    public void eat(){                 //成員方法,也是具體實現各種功能的地方
        System.out.println("eat");  
    }   
    
}
View Code

   物件的建立:物件是用來儲存一個具體描述事物的一串相關聯的資料。

public static void main(String[] args) {
//     使用new關鍵字建立物件
//     物件型別    物件名=new  類名();
        Person person = new Person();
//      給物件屬性賦值
        person.name="小明";
        person.age=18;
        person.height=180;
        person.sex="男";
//      呼叫成員方法
        person.eat();
//      來呼叫各個屬性的值
        System.out.println("姓名:"+person.name);
        System.out.println("年齡:"+person.age);
    }

三、方法/函式的定義和使用

  在程式設計中,常將一個功能模組寫成函式,可以重複呼叫。

  函式分為全域性函式、全域性靜態函式;在類中還可以定義建構函式、解構函式、拷貝建構函式、成員函式、友元函式、運算子過載函式、行內函數等

  定義:

  許可權修飾符 [static] 返回值型別 方法名(引數列表){

程式碼塊;

    [ 返回值;]

}

  例項:

public class CeShi(){
//    無參無返回值     void來修飾無返回值的方法
    public void sum1(){
        int a=2;
        int b=3;
        System.out.println(a+b);
    }
//    無參有返回值   返回值型別修飾符的範圍要大於等於return出來值得類型範圍
    public int sum2(){
        int a=2;
        int b=4;
        return a+b;
    }
//    有參無返回值
    public void sum3(int a,int b){
        System.out.println(a+b);
    }
//    有參有返回值
    public int sum4(int a, int b){
        return a+b;
    }  
}



//對方法進行呼叫
public  class   CeTest{
        public static void main(String[] args) {
        CeShi ce = new CeShi();
//      無參無返回值
        ce.sum1();
//        無參有返回值
        int i = ce.sum2();  //有返回值的方法呼叫後可以用一個變數接收
        System.out.println(i);
//      有參無返回值
        ce.sum3(1,3);
//       有參有返回值
        int i1 = ce.sum4(3, 8);
        System.out.println(i1);
    }
}
    
View Code

使用:

  方法的呼叫:物件名.方法名

  屬性的呼叫:物件名.屬性名