1. 程式人生 > >3、面向物件

3、面向物件

1、面向物件三大特徵
  ·封裝(encapsulation)
  ·繼承(inherit)
  ·多型(polymorphism)

2、成員變數和區域性變數

成員變數:寫在類體的裡畫,方法體的外面,宣告時可以不進行初始化值,可以被本類或其他類的方法進行呼叫。
區域性變數:寫在方法體的裡面,宣告時必須進行初始化,只能在宣告區域性變數的方法內進行呼叫。

public class local_value{
    
    //基本資料型別
    byte b; //預設值 0
    short s; //預設值 0
    int i; //預設值 0
    char c; //預設值 \u000
    long l; //
預設值 0 float f; //預設值0.0 double d; //預設值0.0 boolean boo; //預設值 false //引用資料型別 String str; //預設值 null public static void main(String[] args){ local_value local = new local_value(); System.out.println(local.b); System.out.println(local.s); System.out.println(local.i); System.out.println(local.c); System.out.println(local.l); System.out.println(local.f); System.out.println(local.d); System.out.println(local.boo); System.out.println(local.str ); } }

3、面向物件封裝和private關鍵字

什麼是封裝?
封裝是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
封裝的優點:
  隱藏程式碼的實現細節,提高安全性。

class Private{

    //姓名
    private String name;
    
    //年齡
    private int age;

    //對外 提供公共的訪問方式,編寫set和get方法
    public void setAge(int _age){
        if (_age>0 && _age<120){
            age = _age;
        }
else{ System.out.println("年齡不符合常理,請重新設定!"); } } public int getAge(){ return age; } public void setName(String _name){ name = _name; } public String getName(){ return name; } } class Private01{ public static void main(String[] args) { Private p = new Private(); //p.age = -10; // 年齡不符合常理,不能為負數 p.setAge(10); p.setName("好人"); System.out.println(p.getName()); System.out.println(p.getAge()); } }

4、引用傳遞、值傳遞

基本資料型別的引數傳遞和值傳遞

class transfer{
    public static void m1(int i){
        i = i + 1;
        System.out.println("m1方法中的i=" + i);//11
    
    }
    public static void main(String[] args){
        int i = 10;
        m1(i);
        System.out.println("main方法中的i=" + i);//10
    }
}

引用資料型別的引數傳遞,傳遞的引用

class transfer01 {

    private int age;

    public void setAge(int _age){
        age = _age;
    }
    public int getAge(){
        return age;
    }
}


class transfer02 {
    
    public static void m1(transfer01 a){
        int age = a.getAge();
        a.setAge(++age);
        System.out.println("m1方法中的age=" + a.getAge()); // 11
    }

    public static void main(String[] args) {
        
        transfer01 a = new transfer01();
        a.setAge(10);
        m1(a);
        System.out.println("main方法中的age=" + a.getAge()); // 11
    }
}