Unit01-OOP-對象和類(上)

      Unit01-OOP-對象和類(上)      

1.什麼是類?什麼是對象?
  1)現實生活是由不少不少對象組成的
    基於對象抽出了類
  2)對象:真實存在的單個的個體
    類:類型、類別,表明一類個體
  3)類中能夠包含:
    3.1)全部對象所共有的特徵/屬性------變量
    3.2)全部對象所共有的行爲-----------方法
  4)一個類能夠建立多個對象,
    同一類型的對象,結構相同,數據不一樣
  5)類是對象的模板,對象是類的具體的實例
 
2.引用類型之間畫等號:
  1)指向同一個對象
  2)對其中一個引用的修改影響另外一個引用
    eg:房子鑰匙
  基本類型之間畫等號:
  1)賦值
  2)對其中一個變量的修改不會影響另外一個變量
    eg:身份證複印件
    
3.null:空,沒有指向任何對象
       若引用的值爲null,則該引用不能再進行任何操做了
       若操做則NullPointerException空指針異常

語法:
             引用
類型       引用類型變量  指向   對象
Student    zs             =     new Student();


Student zs; //引用
int a; //變量

             引用
數據類型  引用類型變量  指向   對象
Cell         c                 =     new Cell();

實參,形參
public static void main(String[] args){
  String n = "zhangsan";
  sayHi(n); //String name="zhangsan"; //實參
}
public static void sayHi(String name){ //形參
 
}java

面向過程的結構化設計的缺陷:
1.缺少對數據的封裝
2.數據和方法(操做數據)的分離

基本數據類型-------------不夠
數組類型-----------------不行
本身造數據類型-----------想裝什麼就裝什麼

高質量的代碼:
  複用性好、擴展性好、維護性好、
  可移植性好、效率好、健壯性好、可讀性好......
數組

引用類型與基本類型學習

 

畫等號測試

nullNullPointerExceptionspa

程序示例1:

Cell.java設計

package oo.day01;
//格子類
public class Cell {
    int row; //行號
    int col; //列號
    
    void drop(){ //下落一格
        row++; //行號增1
    }
    void moveLeft(int n){ //左移n格
        col-=n; //列號減n
    }
    String getCellInfo(){ //獲取格子的行號和列號
        return row+","+col; //返回行列號
    }
}

CellTest.java指針

package oo.day01;
//格子類的測試類
public class CellTest {
    public static void main(String[] args) {
        /*
        Cell c = new Cell();
        c.row = 2;
        c.col = 5;
        c.drop();
        c.moveLeft(3);
        String str = c.getCellInfo();
        System.out.println(str); //3,2
        */
        
        Cell c = new Cell();
        c.row = 2;
        c.col = 5;
        printWall(c); //Cell cc=c;
        
        c.drop(); //c.row=3
        System.out.println("下落後:");
        printWall(c);
        
        c.moveLeft(3);
        System.out.println("左移後:");
        printWall(c);
    }
    //打牆+打格
    public static void printWall(Cell cc){
        for(int i=0;i<20;i++){ //
            for(int j=0;j<10;j++){ //
                if(i==cc.row && j==cc.col){ //行列匹配
                    System.out.print("* ");
                }else{
                    System.out.print("- ");
                }
            }
            System.out.println(); //換行
        }
    }
}

程序示例2:

Student.javacode

package oo.day01;
//學生類
public class Student {
    //成員變量
    String name;
    int age;
    String address;
     
    //方法
    void study(){
        System.out.println(name+"在學習...");
    }
    void sayHi(){
        System.out.println("你們好,我叫"+name+",今年"+age+"歲了,家住"+address);
    }
}

StudentTest.java對象

package oo.day01;
//學生類的測試類
public class StudentTest {
    public static void main(String[] args) {
        //建立學生對象
        Student zs = new Student();
        //給成員變量賦值
        zs.name = "zhangsan";
        zs.age = 25;
        zs.address = "河北廊坊";
        //調用方法
        zs.study();
        zs.sayHi();
        
        Student ls = new Student();
        ls.name = "lisi";
        ls.age = 26;
        ls.address = "黑龍江佳木斯";
        ls.study();
        ls.sayHi();
        
        //new以後每一個成員變量都有默認值
        Student ww = new Student();
        ww.study();
        ww.sayHi();
        
    }
}

引用類型與null的演示blog

package oo.day01;
//引用類型與null的演示
public class RefNullDemo {
    public static void main(String[] args) {
        Cell c = new Cell();
        Cell cc = c; //指向同一個對象
        c.row = 2;
        cc.row = 5;
        System.out.println(c.row); //5
        
        Cell ccc = new Cell();
        ccc.row = 6;
        ccc = null; //空,沒有指向任何對象
        //ccc.row = 6; //NullPointerException空指針異常
    }
}
相關文章
相關標籤/搜索