一个用户账户记录例子总结--java面向对象基础

总结:这是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());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值