1. 程式人生 > >Java學習lesson 06

Java學習lesson 06

匿名對象、private、this、static

匿名對象

* 節省代碼,並且很多情況下是針對某個方法只需要調用一次的情況下。


* 匿名對象可以調用方法,也可以給成員變量賦值。 同時也可以作為方法的參數進行傳遞。

public class AnonDemo{
    public static void main(String[] args){
        
        System.out.println(new Student().name);
        System.out.println(new Student().sex);
        System.out.println(new Student().age);

}

}
class Student{
    String name="poppy";
    String sex="女";
    int age=20;
}


技術分享


封裝

* 概念: 隱藏對象的屬性和細節,僅對外提供公共的方法進行訪問。

* private

* 當類的成員變量使用private 修飾符修飾,那麽就不可以直接訪問到該成員變量.

* 當使用private 修飾的成員變量或者成員方法,僅能在本類中使用

* private 對於main 方法的修飾,也是可以產生作用的.

public class PrivateDemo{
    public static void main(String[] args){
    Student student=new Student();
     //student.name="弋痕夕";//如果在外部訪問private則會出現name可以在Student中訪問private
    student.subject();

}

}

class Student{
    private String name;
    private String sex;
    private int age;
    void subject(){
            name="山鬼謠";//private在本類中沒有限制
        System.out.println(name+"選擇的課是java");        
 
}

}

student.name(錯誤)

技術分享


name="山鬼謠";

技術分享

* javaBean:


它的所有成員變量都使用private 進行修飾,並且對外提供可訪問的設置值和獲取值的set,get 方法。不同的應用場景,可能命名不同,數據庫的應用中稱為POJO類.

public class JavaBeanDemo{
    public static void main(String[] args){
      Student student=new Student();
      student.setName("山鬼謠");
      student.setSex("男");
      student.setAge(24);
      student.subject();

    }

}

class Student{
    private String name;
    private String sex;
    private int age;
    void setName(String nameParm){
    name=nameParm;
    
    }
    //JavaBean類
    String getName(){
    return name;

    }
    void setSex(String sexParm){
    sex=sexParm;
    
    }
    String getSex(){
    return sex;

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

    }
    
    
    void subject(){
        System.out.println(name+":"+sex+","+age+"歲");        
        System.out.println("選擇的課是java");
    }

}


技術分享


優先原則: 對於一個類的成員方法來說,如果傳遞的形參的變量名稱和類的成員變量名稱相同,jvm在處 理的時候優先當做方法的形參來處理。

this 關鍵字


代表了當前對象的引用(可以理解為,當前誰來調用,那麽方法中的this 就代表誰)。


對於成員變量可以區分出來的場景,this 可加也可以不加,實際效果相同。但是對於實現 javaBean/POJO 來說,我們建議都加上在setXXX,getXXX方法中.


例:

void setName(String name){

this.name=name;

}

String getName(){

return this.name;


}

* 初始化類成員變量的方式

* 在定義成員變量的同時進行賦值.

* 提供外界可訪問到的方法,在方法中進行賦值.

* 通過構造方法進行賦值.

public class VariableDemo{
    public static void main(String[] args){
    Student student=new Student();
   
    student.write();
    Student student1=new Student("山鬼謠");//構造方法賦值
    student1.write();
    Student student2=new Student();
    student2.setName("天凈沙");//在方法中進行賦值
    student2.write();

}

}
class Student{
   String name="弋痕夕";//定義成員變量時同時賦值
  
   Student(){
	  
   }
   Student(String name){
    this.name=name;
   }
   void setName(String name){
    this.name=name;
   }
   String getName(){
    return this.name;
   }
   void write(){
   System.out.println("姓名:"+name);
  
   } 

}


技術分享

static


* 隨著類加載而加載(靜態方法區中來保存靜態成員變量)


* 優先於對象創建


* 被類的所有對象共享(靜態的成員變量會保存在該class的靜態方法區中,所以每個對象看到的 都是同一份.)


* 可以通過類名來訪問也可以通過對象名來訪問(一般通過類名來訪問)。


* 靜態的成員,一般稱為類相關的成員。


* static 修飾符既可以修飾成員變量,也可以修飾成員方法。 且修飾之後,就可以通過類名來直 接訪問到。


* this變量在靜態方法中不可以使用


* 靜態方法中只能訪問靜態成員變量和靜態方法;非靜態方法既可以訪問靜態成員和方法也可以訪 問非靜態成員和方法。

public class StaticDemo{
    public static void main(String[] args){
     Person person=new Person();
     person.setName("山鬼謠");
     Person.skill();//通過類名來訪問	 
}
}
class Person{
    static String name;
    static String sex;
    void setName(String nameParm){
        name=nameParm;     
    }
    String getName(){
        return name;
    }
    
	static void skill(){
	    System.out.println(name+"的技能是:“絕氣逆空”");
	
	}
	
}

非靜態雖然可以訪問靜態的方法,但是不建議這樣做。

* main方法.

修飾符 返回類型 方法名 (參數列表){


}


public static void main(String[] args){


}


* public: 最大的一個訪問權限,使得jvm能夠成功調用

* static: 類相關的,與對象無關. A.main([]);


public class A{

main(){

System.("");

}

}


Java學習lesson 06