思路:
用户类User有两个状态:
name名字,
isVip是否为会员,
有一个行为确认自己是不是会员。
代码:
package ppp;
public class User {
String name;
//默认不是会员
//字段的默认值,它是在默认的构造器里设置的。
boolean isVip = false;
void checkVip(boolean isVip){
if(isVip) {
System.out.println("是会员");
}else {
System.out.println("不是会员");
}
}
// 测试
// 在类中找不到默认的构造器,可以通过反编译工具看到默认的构造方法。
public static void main(String[] args) {
//注册用户
User tom = new User();
tom.name = "Tom";
tom.isVip =false;
// 在创建对象时,自动调用的方法,我们称它是构造器。
// 比如下面第一行的User()即为构造器。
User john = new User();
john.name = "John";
john.isVip = false;
User mimi = new User();
mimi.name = "Mimi";
mimi.isVip = true;
User kk = new User();
kk.name = "Kk";
//储存用户到数组
User[] userlist = new User[] {tom,john,mimi,kk};
//判断是否为会员
for (User user : userlist) {
System.out.print(user.name);
user.checkVip(user.isVip);
}
}
}
结果:
Tom不是会员
John不是会员
Mimi是会员
Kk不是会员
内存结构图:

15-撩课学院-JavaEE-面向对象-用户会员内存分析.mp4_20190320_144434.073.jpg
用XJad反编译的内容
package ppp;
import java.io.PrintStream;
public class User
{
String name;
boolean isVip; //没有默认值
// 默认的构造器/构造方法
public User()
{
isVip = false; //默认值在这里哒!
}
void checkVip(boolean isVip)
{
if (isVip)
System.out.println("是会员");
else
System.out.println("不是会员");
}
public static void main(String args[])
{
User tom = new User();
tom.name = "Tom";
tom.isVip = false;
User john = new User();
john.name = "John";
john.isVip = false;
User mimi = new User();
mimi.name = "Mimi";
mimi.isVip = true;
User kk = new User();
kk.name = "Kk";
User userlist[] = {
tom, john, mimi, kk
};
User auser[];
int j = (auser = userlist).length;
for (int i = 0; i < j; i++)
{
User user = auser[i];
System.out.print(user.name);
user.checkVip(user.isVip);
}
}
}
构造器的作用:
- 创建对象,必须和new一起使用
- 完成对象的初始化操作
构造器的特点:
- 构造器的名称和当前类名是一样的
- 禁止有返回类型 不能使用void作为返回值
- 在构造器当作不能使用return
- 但是构造器是有返回值的,它返回的是当前创建对象的地址
默认构造器的特点:
- 符合上面构造器的所有特点
- 没有参数
- 如果类使用了public修饰符,它创建的默认构造器也会加public