JAVA語言中類、對象、封裝、private、this、構造方法、static及main方法格式解釋

類與對象

面向對象
       面向對象是基於面向過程的編程思想
類與對象
       Java語言中最基本的單位是類。用類體現事物

       成員變量                事物屬性
       成員方法                事物行爲
:是一組相關的屬性和行爲的集合。
對象:是該類事物的具體存在,是一個具體的實例。
例如:
學生:類
班長:對象

類的定義及使用
       類的定義
              成員變量:定義格式相同,只是位置不同
              成員方法:定義格式不同,只是去掉了static
       使用類的內容
              創建對象格式:
                     類名   對象名 = new 類名();
              使用成員變量、成員方法
                      對象名.成員變量
                      對象名.成員方法()

成員變量與局部變量的區別
       在類中位置不同
              成員變量:類中方法外
              局部變量:方法內或方法聲明上
       在內存中位置不同
              成員變量:棧內存
              局部變量:堆內存
       生命週期不同
              成員變量:隨着對象的存在而存在,隨着對象的消失而消失
              局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失
       初始化不同
              成員變量:用默認初始化值
              局部變量:沒有默認初始化值,必須先定義,賦值,才能使用。 
            
形式參數的問題:
       基本類型:形式參數的改變不影響實際參數
       引用類型:形式參數的改變直接影響實際參數
     (引用類型有:類、接口、數組)

匿名對象:沒有名字的對象。
       應用場景:只調用一次的時候適合,調用多次不適合。
       匿名對象調用完畢後可以別垃圾回收器回收
 


class Student1{
	public void show() {
		System.out.println("hello world");
	}
}

class Student1Demo{
	public void method(Student1 s) {
		s.show();
	}
}

public class NoName {

	public static void main(String[] args) {
		
		Student1Demo s = new Student1Demo();
		Student1 s1 = new Student1();
		s.method(s1);
		
		System.out.println("---------");
		
		//匿名方法調用
		new Student1Demo().method(new Student1());
	}
}

--------------------------------------------------------------------------------------

結果:
hello world
---------
hello world

封裝

封裝
       封裝:是指隱藏對象的屬性和實現細節,只對外提供公共訪問方式。
       好處
                1、隱藏了實現細節,提供公共的訪問方式
                2、提高了代碼的複用性
                3、提高了安全性
       封裝原則
              將不需要對外提供的內容都隱藏起來
              把屬性隱藏,提供公共方法對其訪問

private關鍵字
       是一個權限修飾符
       可以修飾成員(成員變量和成員方法)
       被private修飾的成員只在本類中才能訪問。
private常見應用:
       把成員變量用private修飾
       提供對應的getXxx()/setXxx()方法

this關鍵字
       代表所在類的對象引用
       方法被哪個對象調用,this就代表那個對象(當局部變量隱藏成員變量時使用)

構造方法
       構造方法作用:給對象的數據進行初始化
       構造方法格式:
              方法名與類名相同
              沒有返回值類型,連void都沒有
              沒有具體的返回值
       構造方法注意事項
              構造方法也是可以重載的
              如果給未出構造方法,系統將自動提供一個無參構造方法。
              如果給出構造方法,系統將不再提供默認的無參構造方法。(如果還想使用無參構造方法,必須自己給出)
            (建議自己給出無參構造方法)
        給成員賦值兩種方式
               setXxx();
               構造方法


class Student{
	private String name;
	
	private int age;
	
	//無參構造方法
	public Student(){
	}
	
	//帶參構造方法
	public Student(String name,int age) {
		this.name=name;
		this.age=age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	public void show() {
		System.out.println(name+"---"+age);
	}
}
	
public class StudentTest {
	public static void main(String[] args) {
		Student s = new Student();
		
		s.setName("林青霞");
		s.setAge(27);
		
		System.out.println(s.getName()+"---"+s.getAge());
		
		Student s1 = new Student("劉意",30);
		
		s1.show();
	}
}


----------------------------------------------------------------------------------------
結果:

林青霞---27
劉意---30

類的初始化過程
       加載Student.class文件進內存
       在棧中爲s開闢空間
       在堆內存未學生對象開闢空間
       對學生對象的成員變量進行默認初始化
       對學生對象的成員變量進行顯示初始化
       通過構造方法對學生對象的成員變量賦值
       學生對象初始化完畢,把對象地址賦值給s變量

class Phone{
	//品牌
	private String brand;
	//價格
	private int price;
	//顏色
	private String color;
	//無參構造方法
	public Phone() {
		
	}
	
	public void setBrand(String brand) {
		this.brand=brand;
	}
	
	public int getPrice() {
		return price;
	}
	
	public void setPrice(int price) {
		this.price = price;
	}
	
	public String getColor() {
		return color;
	}
	
	public void setColor(String color) {
		this.color = color;
	}
	
	public String getBrand() {
		return brand;
	}
	
}
public class PhoneTest {

	public static void main(String[] args) {
		Phone s = new Phone();
		s.setBrand("三星");
		s.setPrice(4999);
		s.setColor("褐色");
		System.out.println(s.getBrand()+"---"+s.getPrice()+"---"+s.getColor());
	}
}

-----------------------------------------------------------------------------------------
結果:

三星---4999---褐色

如果一個變量是用來描述這個類的信息,該變量就應該定義爲成員變量

static關鍵字
         可以修飾成員變量和成員方法
         特點:
                隨着類的加載而加載
                優先與對象存在
                被類的所有對象共享(判斷該不該使用靜態的依據)
                可以通過類名調用
          注意事項
                 在靜態方法中是沒有this關鍵字
                 靜態方法只能訪問靜態成員變量和靜態成員方法(非靜態方法都可以訪問)

靜態變量和成員變量的區別
       所屬不同
              靜態變量:屬於類,類變量
              成員變量:屬於對象,對象變量,實例變量
       內存位置不同
              靜態變量:方法區的靜態區
              成員變量:堆內存
       生命週期不同
              靜態變量:靜態變量是隨着類的加載而加載,隨着類的消失而消失
              成員變量:成員變量是隨着對象的創建而存在,隨着對象的消失而消失
       調用不同
              靜態變量:可以通過對象名調用,也可以通過類名調用
              成員變量:只能通過對象名調用

main方法格式:
public  static  void  main(String[]  args){....}
public:公共的,訪問權限是最大的。由於main方法是被jvm調用,所以權限要夠大。
static:靜態的,不需要創建對象,通過類名就可以。方便jvm調用。
void:main方法是被jvm調用,不需要返回值
main:是一個常見的方法入口。(主方法)
String[]  args:字符串數組。
 

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