1、类和对象是什么?
类是共同特征的描述(设计图);对象:是真实存在的具体实例。
2.如何设计类?
3.如何创建对象?
类名 对象名 = new 类名();
4.拿到对象之后怎么访问对象信息?
①对象.成员变量
②对象.成员方法(…)
先创建Car类
package com.study.oop;
public class Car {
String name;
double price;
public void start() {
System.out.println(name + "启动了");
}
public void run(){
System.out.println("价值"+price+"的"+name+"跑的很快");
}
}
package com.study.oop;
//学会设计对象并使用
public class Test01 {
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 c1 =new Car();
c1.name="奔驰";
c1.price=40.23;
c1.start();
c1.run();
}
}
5.定义类的补充注意事项
①类名其首字母建议大写,且有意义,满足驼峰式
②一个java文件可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。建议实际开发中一个代码文件定义一个类。
③成员变量的完整定义格式是:修饰符 数据类型 变量名称 =初始名称;一般无需指定初始值,存在默认值。
6.对象到底放在哪个位置?
放在堆内存中
7.Car c =new Car(); c变量名中存储的是什么?
是对象在堆内存中的地址
8.成员变量(name,price)的数据放在哪里?存在于哪个位置?
数据放在对象中,存在于堆内存中。
package com.study.oop.practice;
//面向对象编程训练,购物车模块模拟
//注意:此训练仅基于此前知识来模拟,尚存在许多缺陷。
import java.util.Scanner;
public class ShopCar {
public static void main(String[] args) {
Goods[] shopCar = new Goods[100];
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":
//商品添加模块
addGoods(shopCar, sc);
break;
case "query":
//查询商品模块
queryGoods(shopCar, sc);
break;
case "update":
//修改商品购物数量
updateGoods(shopCar, sc);
break;
case "pay":
//结算商品金额
payGoods(shopCar, sc);
break;
default:
System.out.println("你输入的命令有问题");
}
}
}
private static void payGoods(Goods[] shopCar, Scanner sc) {
queryGoods(shopCar, sc);
System.out.println("=========你的结算账单如下============");
double money=0;double money1=0;
for (int i=0;i<shopCar.length;i++){
Goods g =shopCar[i];
if (g!=null){
money1=g.price* g.buyNumber;
for (int j=0;j<g.id;j++){
System.out.println("购买的"+g.name+"金额为:"+money1);
break;
}
}else {
break;
}
money=money1+money;
}
System.out.println("订单总金额:"+money);
}
private static void updateGoods(Goods[] shopCar, Scanner sc) {
System.out.println("请输入要修改购买数量的商品编号(不能重复):");
int input = sc.nextInt();
// Goods g = getGoodsById(shopCar, input);
out:
for (int i=0;i<shopCar.length;i++){
Goods g =shopCar[i];
if (g == null) {
//没有该商品
System.out.println("对不起,没有该商品");
} else {
//存在该商品对象,可以修改了
for (int j= 0;j<= g.id+1;j++){
System.out.println("请输入" + g.name + "最新商品数量:");
g.buyNumber = sc.nextInt();
System.out.println("修改完成");
queryGoods(shopCar, sc);
break out;
}
}
}
}
private static void queryGoods(Goods[] shopCar, Scanner sc) {
System.out.println("=============查询购物车信息如下===============");
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] != null) {
System.out.println("编号\t\t名称\t\t购买数量\t\t价格");
System.out.println(shopCar[i].id + "\t\t" + shopCar[i].name + "\t\t" + shopCar[i].buyNumber + "\t\t" + shopCar[i].price);
} 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 number = sc.nextInt();
System.out.println("请输入商品购买价格:");
double price = sc.nextDouble();
//2.将商品信息封装成一个商品对象
Goods g = new Goods();
g.id = id;
g.name = name;
g.price = price;
g.buyNumber = number;
//3.把这个商品对象添加到购物车数组中去
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] == null) {
shopCar[i] = g;
break;
}
}
System.out.println("您的商品" + g.name + "添加到购物车完成");
}
//定义一个根据id查出商品信息的方法
public static Goods getGoodsById(Goods[] shopCar, int id) {
for (int i = 0; i < shopCar.length; i++) {
if (shopCar[i] != null) {
if (shopCar[i].id == id) {
return shopCar[i];
} else {
return null;//代表找完了前面存在的商品,都没有找到
}
}
}
return null;//代表找完了100个都没找到存在的商品
}
}
package com.study.oop.practice;
public class Goods {
int id;//编号
String name;//名称
double price;//价格
int buyNumber;//购买数量
}