java基础:面向对象

本文介绍了Java编程中的三个实战案例:汽车对象创建、购物车功能实现,以及构造器的使用,涵盖了面向对象编程的基础和对象初始化。通过实例展示了如何创建Car对象、模拟购物车操作和理解有参无参构造器的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例一:car小车基础练习

在这里插入图片描述

代码展示

package Test;

public class test2 {
    public static void main(String[] args) {
//        创建汽车对象
        Car c=new Car();
        c.name="宝马";
        c.price=38.9;
        System.out.println(c.name);
        System.out.println(c.price);
        c.start();
        c.run();

        System.out.println("----------");
        Car c2=new Car();
        c2.name="奔驰";
        c2.price=39.9;
        System.out.println(c2.name);
        System.out.println(c2.price);
        c2.start();
        c2.run();
    }
}
package Test;

public class Car {
//    成员变量
    String name;
    double price;

//    方法
    public void start(){
        System.out.println(name+"启动了");

    }
    public void run(){
        System.out.println("价格是:"
        +price+"的"+name+"跑的很快");
    }
}

案例二:购物车功能

在这里插入图片描述

代码展示

package Test;

import java.util.Scanner;

//目标:面向对象编程训练,购物车模块模拟
public class ShopCarTest {
    public static void main(String[] args) {
//        1.定义商品类,用于后期创建商品对象
//        2.定义购物车对象:使用一个数组对象表示。
        Goods[] shopCar=new Goods[100];
//        3.搭建操作架构
        while (true) {
            System.out.println("请您选择如下命令进行操作:");
            System.out.println("添加商品到购物车:add");
            ;
            System.out.println("查询购物车商品展示:query");
            System.out.println("修改商品数量:update");
            System.out.println("结算购买商品的金额:pay");
            Scanner sc=new Scanner(System.in);
            System.out.println("请您输入命令:");
            String command=sc.next();
            switch (command)
            {
                case "add":
    //                添加商品3到购物车
                    addGoods(shopCar,sc);
                    break;
                case "query":
    //                查询购物车商品展示
                    queryGoods(shopCar);
                    break;
                case "update":
    //                修改商品的购买数量
                    updateGoods(shopCar,sc);
                    break;
                case "pay":
    //                结算金额
                    pay(shopCar);
                    break;
                default:
                    System.out.println("没有该功能!");
            }
        }
    }

    private static void pay(Goods[] shopCar) {
        queryGoods(shopCar);
//        1.定义一个求和变量累加金额
        double money=0;
//        2.遍历购物车数组中的全部商品对象,累加单价*数量
//        [g1,g2,null,...]
        for (int i=0;i<shopCar.length;i++)
        {
            Goods g=shopCar[i];
            if ((g!=null))
            {
                money+=(g.price*g.buyNumber);
            }else {
                break;
            }
        }
        System.out.println("订单总金额:"+money);
    }

    private static void updateGoods(Goods[] shopCar,Scanner sc) {
//        让用户输入要修改商品的id,根据id查询出要修改的商品对象
        while (true) {
            System.out.println("请您输入要修改的商品id:");
            int id=sc.nextInt();
            Goods g=getGoodsById(shopCar,id);
            if (g==null)
            {
    //            没有该商品
                System.out.println("对不起,没有购买商品!");
            }
            else {
    //            说明存在该商品对象,可以修改它了
                System.out.println("请您输入:"+g.name+"商品最新购买数量:");
                int buyNumber=sc.nextInt();
                g.buyNumber=buyNumber;
                System.out.println("修改完成");
                queryGoods(shopCar);
                break;
            }
        }
    }
    public static Goods getGoodsById(Goods[] shopCar,int id)
    {
        for (int i=0;i<shopCar.length;i++)
        {
            Goods g=shopCar[i];
            if (g!=null)
            {
//                判断这个商品对象的id是否是我们要找的
                if (g.id==id)
                {
                    return g;
                }
            }else {
                return null;//找完了全面存在的商品,都没有找到!
            }
        }
        return null;//代表找完了100个商品都没有找到id一样的商品
    }


    private static void queryGoods(Goods[] shopCar) {
        System.out.println("=============查询购物车信息如下============");
        System.out.println("编号\t\t名称\t\t\t价格\t\t\t购物数量");
//        shopCar=[g1,g2,g3,null,null,...]
        for (int i=0;i<shopCar.length;i++)
        {
            Goods g=shopCar[i];
            if (g!=null)
            {
//                展示这个商品对象
                System.out.println(g.id+"\t\t"+g.name+g.name+"\t\t\t"+g.price+"\t\t\t"+g.buyNumber);
            }else {
//                遍历结束
                break;
            }
        }
    }

    private static void addGoods(Goods[] shopCar,Scanner sc) {
//        1.录入用户输入的购买商品的信息
        System.out.println("请您输入购买商品的编号(不重复):");
        int id=sc.nextInt();
        System.out.println("请您输入购买商品的名称:");
        String name=sc.next();
        System.out.println("请您输入购买商品的数量:");
        int buyNumber=sc.nextInt();
        System.out.println("请您输入购买商品的价格:");
        double price=sc.nextDouble();

//        2.把这个购买商品的信息封装成一个商品对象
        Goods g=new Goods();
        g.id=id;
        g.name=name;
        g.buyNumber=buyNumber;
        g.price=price;

//        3.把这个商品对象添加到购物车数组中去
//        shopCar=[a,a2,null,.....]
        for (int i=0;i<shopCar.length;i++)
        {
            if (shopCar[i]==null)
            {
//                没有此位置没有元素存入,把我们所新买的商品添加到此处即可
                shopCar[i]=g;
                break;//结束,因为商品已经成功存入了,不需要继续找位置了
            }
        }
        System.out.println("您的商品:"+g.name+"添加到购物车完成!");
    }
}
package Test;

public class Goods {
    int id;//编号
    String name;//名称
    double price;//价格
    int buyNumber;//购买数量

}

最终效果

在这里插入图片描述

案例三构造器的使用:有参和无参

在这里插入图片描述
在这里插入图片描述

package Test;

import java.util.Scanner;

//目标:认识构造器,明白两种类型的构造器的作用
public class Test {
    public static void main(String[] args) {
//        通过调用构造器得到对象
        Car c=new Car();
        c.name="宝马";
        c.price=38.9;//无参数构造器自动被调用
        System.out.println(c.name);
        System.out.println(c.price);

//        调用有参数构造器
        Car c2=new Car("奔驰",39.8);
        System.out.println(c2.name);
        System.out.println(c2.price);
    }
}
package Test;

public class Car {
    String name;
    double price;

//    无参数构造器,默认存在
    public Car(){
        System.out.println("==无参数构造器被掉用==");

    }
//    有参数构造器
    public Car(String n,double p)
    {
        System.out.println("==有参数构造器被调用==");
        name=n;
        price=p;
    }

}

最终效果

在这里插入图片描述

案例四:javaBean实体类(必须有set/get方法)

在这里插入图片描述
在这里插入图片描述

package Test;

public class User {
    //        1.成员变量建议使用private
    private String name;
    private double height;
    private double salary;

//    3.要求提供无参数构造器,有参数构造器是可选
    public User() {
    }

    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }

    //    2.必须为成员变量提供成套的setter和getter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}
package Test;

//目标:记住javaBean的书写要求
public class Test {
    public static void main(String[] args) {
//        1.无参数构造器创建对象封装一个用户信息
        User u1=new User();
        u1.setName("黑马吴彦祖");
        u1.setHeight(180.5);
        u1.setSalary(1000.0);
        System.out.println(u1.getName());
        System.out.println(u1.getHeight());
        System.out.println(u1.getSalary());

//        2.有参数构造器创建对象封装一个用户信息
        User u2=new User("黑马武大郎",156,30000);
        System.out.println(u2.getName());
        System.out.println(u2.getHeight());
        System.out.println(u2.getSalary());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值