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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值