面向对象,关键字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->构造块->构造器