在生活中我们有类似的事情会交互在一起,例如开车要修车
在程序中也有同样的场景出现:在程序中要定义一个车类和一个修理厂类
package com.constructor;
// 做一个汽车类
public class Car {
// 私有成员属性
private String name;
private String color;
private int wheelCount;
// 无参方法
public Car() {}
// 有参构造方法
public Car(String name, String color, int wheelCount) {
this.name = name;
this.color = color;
this.wheelCount = wheelCount;
}
// 判断车轮子是否有4个,如果没有就去修理厂修
public void race() {
if (wheelCount == 4) {
System.out.println("开着" + color + "的" + name + "以200码飙车");
} else {
System.out.println("快去修车...");
}
}
// 创建getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getWheelCount() {
return wheelCount;
}
public void setWheelCount(int wheelCount) {
this.wheelCount = wheelCount;
}
//
}
- 修理厂类
package com.constructor;
public class Factory {
private String name;
private String address;
private String tel;
// 构造无参方法
public Factory() {}
public Factory(String name, String address, String tel) {
this.name = name;
this.address = address;
this.tel = tel;
}
// 实现修车方法
public void repair(Car car) {
if (car.getWheelCount() != 4) {
System.out.println("爆胎,修车20w");
car.setWheelCount(4);
} else {
System.out.println("秀什么车,砸了!!!");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
3.在程序中交互
package com.constructor;
public class Demo5 {
public static void main(String[] args) throws InterruptedException {
Car car = new Car("agar", "红色", 4);
for(int i = 1; i <= 10; i++) {
car.race();
Thread.sleep(500);
}
Thread.sleep(1000);
car.setWheelCount(3);
System.out.println("boom!!! 你轮胎炸了");
car.race();
Thread.sleep(1000);
Factory factory = new Factory();
factory.setName("奥迪4s店");
factory.setAddress("地球村");
factory.setTel("188后面好几个8");
factory.repair(car);
for(int i = 1; i <= 10; i++) {
car.race();
Thread.sleep(500);
}
}
}
在这里用到了【private】
private私有化修饰的成员变量,类外不能通过类对象操作,取值,赋值。
JavaBean规范规定了
setter ==> 赋值操作
格式:
public void set成员变量名(对应成员变量数据类型参数) {
赋值操作;
}
getter ==> 取值操作
public 对应成员变量数据类型返回值 get成员变量名字() {
return 成员变量;
}
注意
1. 方法格式固定,setter和getter方法操作过程不能修改
2. 方法需要符合命名规范,小驼峰命名法
3. boolean类型数据较特殊
boolean类型的成员变量getter方法要求是is开头
this关键字表示对象本身
1. 调用当前方法的类对象
2. 通过构造方法创建的类对象
this表示一个对象!!!当前对象!!!