面向對象,關鍵字this,static,塊
自定義類做返回值使用
例子:蛋糕師做蛋糕:
- 定義一個蛋糕類,
蛋糕的屬性(成員變量): 口味,尺寸. - 定義一個糕點師,
糕點師屬性(成員變量): 姓名
糕點師功能(成員方法):做個一個蛋糕.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 的作用:
- 在構造器首行可以調用同類中的其他構造器;
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;
}
- 可以調用本類中的其他屬性即成員變量:
this.name = name;
static
*static關鍵字 靜態的 成員修飾符
類變量|靜態變量: static修飾變量,只能成員變量,不能修飾局部變量
類 方法|靜態方法: static修飾的方法
靜態的內容的使用方式:
類名.方法名([參數列表]);
類名.屬性名;
對象.方法名字([參數列表]);
對象.屬性名;
被static修飾的靜態的內容是屬於類的,可以通過類使用的,可以通過對象去使用
成員的內容是屬於對象的,成員變量,成員方法只能通過對象調用
靜態的內容中只能直接使用靜態的內容,成員內容需要通過對象使用
非靜態的內容中,可以直接使用靜態的,可以直接使用非靜態的內容
只在類第一次加載的時候初始化一次,靜態的內容是獨一份的,所有的對象共享一個類中的靜態內容
塊
塊block: {}->作用域
{}定義在方法中->局部代碼塊|普通語句塊 執行時機:調用方法
{}定義在類中方法外->構造塊 執行時機:new
static{}定義在類中方法外->靜態塊 執行時機:在類第一次加載以後執行一次
同步塊
構造塊先於構造器的代碼執行,如果存在多個構造塊,從上到下以此執行
靜態塊先於主方法執行,如果存在多個靜態塊,從上到下依次執行
static->main->構造塊->構造器