类的创建
- 可以用class关键字来修饰一个类;
- 我们通常会把各种事物分解成各种属性和功能,再抽象成类的形式。
public class Bus {
int width;
int height;
int seating;
double price;
double balance;
String number;
boolean isOpen;
boolean isRuning;
public void stop() {
isRuning = false;
System.out.println("已停车!");
}
public void start() {
isRuning = true;
System.out.println("正在行驶!");
}
public void regist(String no) {
number = no;
System.out.println("注册成功!您的车牌号是" + number);
}
public void pay(double money) {
if (money < price) {
System.out.println("钱没给够,快下车!");
} else {
balance = balance + money;
seating -= 1;
System.out.println("欢迎乘坐!");
}
}
public void openDoor() {
isOpen = true;
System.out.println("开门!");
}
public void closeDoor() {
isOpen = false;
System.out.println("关门!");
}
}
类的使用(创建对象)
- 类的使用
- 使用new关键字,可以把类实例化(创建)成一个对象,并交给变量b来持有;
- 通过b.可以访问这个对象里面的方法或者成员变量
Bus b = new Bus();
b.regist("闽A000000"); //注册成功!您的车牌号是闽A000000
b.start(); //正在行驶!
b.stop(); //已停车!
b.openDoor(); //开门!
b.pay(0); // 欢迎乘坐!
b.start();// 正在行驶!
- 对象名实际上也是一个保存地址的指针(引用),即为对象也是引用型变量
- 因此对象是引用型变量,所以不可以通过赋值其他对象名的方式创建对象
成员变量
-
成员变量:定义在类内部但在方法外部的变量,也就是直接写在Class内的变量,通常用于存储与对象状态相关的信息。成员变量可以是任何数据类型,包括基本数据类型(比如int、double、char等)或引用类型(比如其他类的对象、数组等):
- 定义在类里面的大括号下的变量,叫成员变量;
- 成员变量会有一个默认的值;
- 每个对象内的成员变量是相互独立的
- 当我们使用断点调试工具步入类中的方法时,会有一个this变量给我们监视,其中this保存的是一个地址标签,这个标签告诉我们当前调用方法的具体是哪个对象那个,也就是说谁调用的this就会保存谁的地址,也就会指向谁
- 所以需要使用对应的对象名(
对象名.)来访问。 - 如果是在类里面的方法访问成员变量,可以用this关键字,或者是直接用变量名访问。成员变量名和形式参数重名必须用this来访问,具体看下方this变量的解释
- 被static修饰过的方法,叫做静态方法,静态方法不属于任何一个实例对象。所以,不能在静态方法里面直接访问成员变量。只能使用
对象名.的方法来访问 ,具体请参考静态方法的使用方法
- 所以需要使用对应的对象名(
this变量
- this是一个用来指向调用方法对象的变量
- 新版本的java在类中的方法中,可以省略this但这并不代表逻辑发生了改变
//旧写法
public class Bus {
int width;
int height;
boolean isRuning;
public void stop() {
this.isRuning = false;
System.out.println("已停车!");
}
public void start() {
this.isRuning = true;
System.out.println("正在行驶!");
}
}
//新写法,和旧写法等效
public class Bus {
int width;
int height;
boolean isRuning;
public void stop() {
isRuning = false;
System.out.println("已停车!");
}
public void start() {
isRuning = true;
System.out.println("正在行驶!");
}
}
-
但当方法中的形式参数名和类中成员变量 重名则必须使用this
- 如下代码所示,形式参数number和类中的形式变量重名了
- 如果代码复杂或存在命名冲突,建议保留
this以提高可读性和避免潜在错误。
public class Bus {
String number;
public void regist(String number) {
this.number = number;
System.out.println("注册成功!您的车牌号是" + number);
}
}