总结:这是modol层,记录基础数据,一般用bean结构(get set方法,空参构造器)
public class Customer {
private String lastName;
private String firstName;
private int age;
private String email;
private String phone;
Customer(String l,String f,int age,String email,String phone){
lastName=l;
firstName=f;
this.age=age;
this.email=email;
this.phone=phone;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
这里是方法类,创建对象数组
public class CustomerList {
private int k;
Customer[] customers = new Customer[10];
public CustomerList() {
}
public boolean addCustomer(Customer customer) {
if (k < 10) {
customers[k] = customer;
k++;
return true;
} else {
return false;
}
}
public boolean replaceCustomer(int index, Customer customerre) {
if (index <= k) {
customers[index] = customerre;
return true;
} else {
return false;
}
}
public boolean deleteCustomer(int index) {
if (index <= k) {
for (int i = index; i <= k - 1; i++) {
customers[i] = customers[i + 1];
customers[k] = null;
}
return true;
} else {
return false;
}
}
public int getNumberOfCustomer() {
return k;
}
public Customer[] getAllCustomer() {
Customer cust[] = new Customer[k];
for (int i = 0; i < k; i++) {
cust[i] = customers[i];
}
return cust;
}
}
这里有需要总结的地方
Customer custs[] =customerList.getAllCustomer();
for (int i = 0; i <custs.length ; i++) {
Customer custq= custs[i];
这里我一直认为要创建一个对象再赋值,Customer custq =new Customer.我理解错了,这里不用再创建对象了,创建对象其实就是创建一个栈空间的custq和堆空间的一个空间,正确写法就是创建一个栈空间的custq获取到custs[i]的地址。
System.out.println(custq.getAge());
}
public class view {
public static void main(String[] args) {
// Customer customer = new Customer("kevin","deng",20,"kd@gamil.com","17777777777");
CustomerList customerList =new CustomerList();
// customerList.addCustomer(customer);
// int j =customerList.getNumberOfCustomer();
// System.out.println(j);
// Customer customer1 = new Customer("li","yanyan",20,"kd@gamil.com","17777777777");
// customerList.addCustomer(customer1);
// int k =customerList.getNumberOfCustomer();
// System.out.println(k);
// Customer customer2 = new Customer("wang","yifan",20,"kd@gamil.com","17777777777");
// customerList.replaceCustomer(0,customer2);
for (; ; ) {
System.out.println("-----------------------------客户信息管理软件------------------------------");
System.out.println();
System.out.println("---------------------------------1.添加客户---------------------------------");
System.out.println("---------------------------------2.修改客户---------------------------------");
System.out.println("---------------------------------3.删除客户---------------------------------");
System.out.println("---------------------------------4.客户列表---------------------------------");
System.out.println("---------------------------------5.退 出----------------------------------");
System.out.println();
System.out.println("---------------------------------请选择(1-5):--------------------------------");
Scanner scan = new Scanner(System.in);
int k = scan.nextInt();
int j =1;
switch (k){
case 1:
System.out.println("请输入您要添加的客户性");
String tlname= scan.next();
System.out.println("请输入您要添加的客户名");
String tfname= scan.next();
System.out.println("请输入您要添加的年龄");
int tage =scan.nextInt();
System.out.println("请输入您要添加的邮箱");
String temail= scan.next();
System.out.println("请输入您要添加的客户电话");
String ttelephone= scan.next();
customerList.addCustomer (new Customer(tlname,tfname,tage,temail,ttelephone));
break;
case 2:
System.out.println("请输入您要修改的客户ID");
int index =scan.nextInt();
System.out.println("请输入您要修改的客户性");
String lname= scan.next();
System.out.println("请输入您要修改的客户名");
String fname= scan.next();
System.out.println("请输入您要修改的年龄");
int age =scan.nextInt();
System.out.println("请输入您要修改的邮箱");
String email= scan.next();
System.out.println("请输入您要修改的客户电话");
String telephone= scan.next();
Customer customerre =new Customer(lname,fname,age,email,telephone);
customerList.replaceCustomer(index,customerre);
break;
case 3:
System.out.println("请输入你要删除的客户号码");
int nb =scan.nextInt();
customerList.deleteCustomer(nb);
case 4:
System.out.println("---------------------------------列表----------------------------------");
Customer custs[] =customerList.getAllCustomer();
for (int i = 0; i <custs.length ; i++) {
Customer custq= custs[i];
System.out.println(custq.getAge());
}
break;
case 5:
default:
System.out.println("请输入正确的选项");
}
}
}
}
关于面向对象第一阶段的基本总结
1.遇到的错误理解
一直搞不透彻一个类调用一个类的原理,只知道应该这么写
解答
举例,假如有一个项目 类三调用类二调用类一。
我开始搞不懂是类三 调用的时候是通过方法获取地址调用啊,还是通过类中的属性获取到地址调用。因为我一直认为这三个类是一直存在的。实际上这些类还没有在运作的时候是不存在的,我们只是画好了图纸。当我使用类三想调用类二的时候,一定要先new出来,new出来相当于开辟了一个拥有类二的空间,可以随意使用类二的东西。如果不new,类二就不存在,还是一张图纸。同时我们new的时候也就获取到类二的地址值。这就实现了调用。
另外的类二怎么调用类一呢?
假设 类二啥都没直接 public Customer customer(){
return ??
}
怎么返回一个Customer 类的值?所以要在类二开辟一个类一 不然没有类一可以返回。
类二new了类一是以数组的方式,也是获取到了类一的地址,开辟了多个类一。类三通过调用类二指向类一的地址值来成功获取类一数据
2.对这个代码的不理解暴露我的知识层的错误
Customer custs[] =customerList.getAllCustomer();
for (int i = 0; i <custs.length ; i++) {
Customer custq= custs[i];
***这里我一直认为要创建一个对象再赋值,如果没有创建这样的一个对象,
我无法进行赋值操作,是会报错的Customer custq =new Customer().
我理解错了,这里只是用了一个Customer 类型的 属性而已,就像在写一个方法的时候
会在属性那里写一个别的类的类型的属性,当然new一个也是可以的,就在栈空间创建一
个custq,堆空间开辟了一个空间,然后栈custq的地址值换成新的,原来开辟的空间就成
了垃圾***
System.out.println(custq.getAge());