📃个人主页:个人主页
🔥系列专栏:JAVASE基础
💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习
面向对象介绍
并不是一个技术,而是一种编程指导思想。 把现实世界的具体事物全部看成一个一个的对象来解决问题。
为什么要用面向对象编程
生活中我们解决问题就是按照对象化的方式进行的。如果程序也能够按照生活的中的方式来解
决问题,那么程序就更符合人类的思维习惯,代码看起来会更易理解、更简单。
面向对象编程的指导思想、优点小结:
目录
在Java中,必须先设计类,才能获得对象。
类(设计图):是对象共同特征的描述; 对象:是真实存在的具体实例。
如何定义类
public class 类名 {
1、成员变量(代表属性,一般是名词)
2、成员方法(代表行为,一般是动词)
3、构造器 (后面学习)
4、代码块 (后面学习)
5、内部类 (后面学习)}
- public class Car { }
- String name;
- double price;
- // 属性 (成员变量)
- // 行为(方法)
- public void start(){
- }
- public void run(){
- }
如何得到类的对象
类名 对象名 = new 类名();
Car c = new Car();
如何使用对象
对象的成员变量的默认值规则
数据类型 | 明细 | 默认值 |
基本类型 | byte、short、char、int、long | 0 |
float、double | 0.0 | |
boolean | false | |
引用类型 | 类、接口、数组、String | null |
1.对象放在哪个位置?
堆内存中
2. Car c = new Car(); c变量名中存储的是什么?
存储的是对象在堆内存中的地址。
3. 成员变量(name、price)的数据放在哪里,存在于哪个位置?
对象中,存在于堆内存中。
- public class base {
- public static void main(String[] args) {
-
- Student s1 = new Student();
- s1.name = "小明";
- s1.sex = '男';
- s1.hobby = "游戏、睡觉、听课";
- s1.study();
- System.out.println("-------------------");
- // 把学生类型的s1变量赋值给学生类型的s2变量
- Student s2 = s1;
- s2.hobby = "爱提问";
- System.out.println(s2.name);
- System.out.println(s2.sex);
- System.out.println(s1.hobby);
- s2.study();
- System.out.println("-------------------");
- s1.study();
- }
-
- }
由此可见:
s2.hobby = "爱提问"; 改变了堆内存的值,导致:s1.study();和第一次输出的不一样
需求
模拟购物车模块的功能,需要实现添加商品到购物车中去,同时需要提供修改商品的购买数量,结算商品价格功能(请使用面向对象编程来解决)
分析
商品类
- public class Goods {
- int id;
- String name;
- double price;
- int buyNumber;
- }
- import java.util.Scanner;
-
- public class base {
- public static void main(String[] args) {
- Goods[] goods=new Goods[100];
- Scanner scanner = new Scanner(System.in);
-
-
- while (true) {
- System.out.println("请输入你的操作:add(添加商品) query(查询购物车) update(修改购物车) pay(支付)");
- System.out.println("-----------------------------------");
- String command = scanner.next();
-
- switch (command){
- case "add":
- //添加
- add(goods,scanner);
- break;
- case "query":
- //查询
- query(goods,scanner);
- break;
- case "update":
- //修改
- update(goods,scanner);
- break;
- case "pay":
- //支付
- pay(goods,scanner);
- break;
- default:
- System.out.println("你输入的命令有误");
- break;
-
-
- }
- }
-
-
- }
-
- private static void pay(Goods[] goods, Scanner scanner) {
- double money=0;
-
- for (int i = 0; i < goods.length; i++) {
- Goods g = goods[i];
- if (g!=null){
- money+=(g.price*g.buyNumber);
- }
- else break;
-
-
- }
- System.out.println("购物车商品价格为:"+money);
-
- }
-
- private static void update(Goods[] goods, Scanner scanner) {
- System.out.println("请输入要修改的商品编号");
- int id = scanner.nextInt();
- Goods date = getupdate(goods, id);
- if (date==null){
- System.out.println("没有找到改商品");
- }else {
- System.out.println(date.name+"修改后的数量:");
- date.buyNumber=scanner.nextInt();
- System.out.println("修改成功");
- query(goods,scanner);
- }
-
-
- }
-
-
- private static Goods getupdate(Goods[] goods,int id){
- for (int i = 0; i < goods.length; i++) {
- Goods g=goods[i];
- if (g!=null){
- if (g.id==id){
- return g;
- }
- }
- return null;
-
- }
- return null;
-
- }
-
-
-
- private static void query(Goods[] goods, Scanner scanner) {
- System.out.println("-----------------------------------");
- System.out.println("编号\t\t名称\t\t价格\t\t数量");
- for (int i = 0; i < goods.length; i++) {
- Goods g=goods[i];
- if (g!=null){
- System.out.print(g.id+"\t\t");
- System.out.print(g.name+"\t\t");
- System.out.print(g.price+"\t\t");
- System.out.println(g.buyNumber+"\t\t");
- }else {
- break;
- }
-
-
- }
-
- }
-
- private static void add(Goods[] goods, Scanner scanner) {
- Goods g = new Goods();
- System.out.println("侵害输入商品的编号");
- g.id=scanner.nextInt();
- System.out.println("请输入商品的名称");
- g.name=scanner.next();
- System.out.println("请输入商品的价格");
- g.price=scanner.nextDouble();
- System.out.println("请输入商品的数量");
- g.buyNumber=scanner.nextInt();
-
-
- for (int i = 0; i < goods.length; i++) {
- if (goods[i]==null){
- goods[i]=g;
- System.out.println(g.name + "添加成功");
- break;
- }
-
- }
-
-
- }
-
- }
-
今天的分享就到这里啦!快快通过下方链接注册加入刷题大军吧!各种大厂面试真题在等你哦!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站