面向對象,關鍵字this,static,塊

自定義類做返回值使用

例子:蛋糕師做蛋糕:

  1. 定義一個蛋糕類,
    蛋糕的屬性(成員變量): 口味,尺寸.
  2. 定義一個糕點師,
    糕點師屬性(成員變量): 姓名
    糕點師功能(成員方法):做個一個蛋糕.
    class Cake {
    	String size;
    	String taste;
    	Cake(String size,String taste) {
    	this.size = size;
    	this.taste = taste;
    	}
    }
    
    class Baker {
    	String name;
    	Baker(String name){
    	this.name = name;
    	}
    	public Cake bake(String size,String taste) {
    	Cake cake = new Cake (size, taste);
    	return cake;
    	}
    }
    	public calss Test{
    	public static void main(String[] args) {
    	Baker baker = new Baker("張三");
    	Cake cake = baker.bake("13寸","甜的");
    	}
    }
    
    

自定義類做成員變量使用

學生類和學校類,將學校作爲學生類的一個屬性.
比如,某個學生,ta所在的學校是該學生的屬性

class School {
	String name;
	String location;
	School(String name,String location) {
	this.name = name;
	this.location = location;
	}
}
class Student {
String name;
School school;
	Student(String name,School school){
	this.name = name;
	this.school = school;
	}
	void infor() {
	System.out.println(name+"在位於"+school.loacation+"的"+school.name+"讀書");
	}
}

public calss Test {
	public static void main(String[] args) {
	School school = new School("學校名",''學校地址'');
	Student student = new Student("張三",school);
	student.info();
	}
}

自定義類做參數列表使用

學生類,和書本類,學生有個讀書的功能,在調用該讀書功能的時候,需要傳入學生所讀的書籍的屬性參數.

public class Test {
	public static void main(String[] args) {
	Student student = new Student("張三","18");
	Book book = new Book("一本好書");
	student.read(student,book);
	}
}
class Book {
String name;
	Book(String name) {
	this.name = name;
	}
}

class Student {
String name;
int age;
	Student(String name,int age) {
	this.name = name;
	this.age = age;
	}
	void read (Student student,Book book) {
	System.out.pirntln(student.name+"正在讀"+book.name+"書");
	}
}

this 的作用:

  1. 在構造器首行可以調用同類中的其他構造器;
Student(String name, int age, Boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
Student(String name, int age, Boolean gender) {
this(name,age);
this.gender = gender;
}
  1. 可以調用本類中的其他屬性即成員變量:
this.name = name;

static

*static關鍵字 靜態的 成員修飾符
類變量|靜態變量: static修飾變量,只能成員變量,不能修飾局部變量
類 方法|靜態方法: static修飾的方法
靜態的內容的使用方式:

類名.方法名([參數列表]);
類名.屬性名;
對象.方法名字([參數列表]);
對象.屬性名;

被static修飾的靜態的內容是屬於類的,可以通過類使用的,可以通過對象去使用
成員的內容是屬於對象的,成員變量,成員方法只能通過對象調用
靜態的內容中只能直接使用靜態的內容,成員內容需要通過對象使用
非靜態的內容中,可以直接使用靜態的,可以直接使用非靜態的內容
只在類第一次加載的時候初始化一次,靜態的內容是獨一份的,所有的對象共享一個類中的靜態內容

塊block: {}->作用域
{}定義在方法中->局部代碼塊|普通語句塊 執行時機:調用方法
{}定義在類中方法外->構造塊 執行時機:new
static{}定義在類中方法外->靜態塊 執行時機:在類第一次加載以後執行一次
同步塊

構造塊先於構造器的代碼執行,如果存在多個構造塊,從上到下以此執行
靜態塊先於主方法執行,如果存在多個靜態塊,從上到下依次執行
static->main->構造塊->構造器

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