JAVA入门——面向对象

面向对象**

面向对象的三大特征:封装、继承、多态。

面向对象的编程叫做OOP

创建对象:类名 对象名=new 构造器();

类是对象共同特征的饿描述,对象是真实存在的具体实例

在Java中,必须先设计类,才能完成对象的创建和使用

//一个工程文件当中只能有一个public修饰的类,并且这个类必须和文件名一直
修饰符 class 类名(首字母大写,需要用驼峰命名方法){
1.成员变量Field:描述类或者对象的属性信息
2.成员方法Method:描述类或者对象的行为,
3.构造器Constrector:初始化一个类的对象返回
4.内部类
5.代码块
}

//在调用的时候
Dog d=new Dog();//先在堆中开辟空间,然后在调用构造方法

修饰符:

  1. Public 共有的

  2. Private 私有的

  3. Protected

  4. 缺省值

    若局部变量没有修饰符的时候,他的标识符的值和他所在的方法的修饰符相同。

## 继承(后面补全)

  1. 类的继承是指在一个现有的类的基础上构建了一个新的类,构建出来的新类被称为现有类的子类,并且子类会拥有父类所有可以继承的属性和方法。

  2. 在java中想要声明一个类可以继承另一个类需要使用extends关键字:

  3. 当子类重写父类的方法后,子类对象将不能访问父类被重写的方法

    所以为了解决这个问题JAVA提供了一个super关键字用于实现访问父类的成员。

如何设计类

public class类名{
1.成员变量(代表属性,一般是名词)
2.成员方法(代表行为,一般是动词)
3.构造器
4.代码块
5.内部块
}

购物车模块的模拟和架构搭建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8NH02ysw-1659955525216)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20220706191144600.png)]

定义商品类

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

定义输入方法

 private static void addGood(Goods[] shopCar,Scanner scanner) {
        System.out.println("请输入商品的编号,不允许重复");
        int id=scanner.nextInt();
        System.out.println("请输入商品的名称");
        String name=scanner.next();
        System.out.println("请输入商品的价格");
        double price=scanner.nextDouble();
        System.out.println("请输入商品的购买数量");
        int buyNumber=scanner.nextInt();

        //进行封装数据将数据封装到g当中
        Goods g=new Goods();
        g.id=id;
        g.name=name;
        g.price=price;
        g.buyNumber=buyNumber;

        //将数据进行传入数组当中
        for (int i = 0; i < shopCar.length; i++) {
            if (shopCar[i]==null){//说明此位置没有元素可以进行赋值
                shopCar[i]=g;
                break;//如果不结束,赋值之后还会一直运行
            }
        }
        System.out.println("你的商品添加购物车成功");
    }

查看商品信息,并进行输出商品列表

//进行查询输出商品列表
    private static void chaxunGood(Goods[] shopCar,Scanner scanner) {
//        System.out.println("请输入你要查询的编号:");
//        int i=scanner.nextInt();
        System.out.println("======商品列表======");
        System.out.println("编号"+"\t\t"+"名称"+"\t\t"+"价格"+"\t\t"+"购买的数量");
        for (int i1 = 0; i1 < shopCar.length; i1++) {
            Goods g = shopCar[i1];
            if (g!=null){
        System.out.println(g.id+"\t\t"+g.name+"\t"+g.price+"\t"+g.buyNumber);
            } else{
                    break;
                }
        }
    }

通过输入编号进行查询商品,然后进行修改金额和购买的数量

private static void XiuGaiGood(Goods[] shopCar,Scanner scanner) {
        System.out.println("请输入你要查询的编号:");
        int x=scanner.nextInt();
        for (int i = 0; i < shopCar.length; i++) {
            Goods g=shopCar[i];
            if (g.id==x){
                System.out.println("======商品列表======");
                System.out.println("编号"+"\t\t"+"名称"+"\t\t"+"价格"+"\t\t"+"购买的数量");
                System.out.println(g.id+"\t\t"+g.name+"\t"+g.price+"\t"+g.buyNumber);
                System.out.println("请输入你想修改的商品价格");
                double price=scanner.nextDouble();
                g.price=price;
                System.out.println("请输入你修改的数量");
                int buy=scanner.nextInt();
                g.buyNumber=buy;
                System.out.println("======商品列表======");
                System.out.println("编号"+"\t\t"+"名称"+"\t\t"+"价格"+"\t\t"+"购买的数量");
                System.out.println(g.id+"\t\t"+g.name+"\t"+g.price+"\t"+g.buyNumber);
                break;
            }else{
                System.out.println("没有查询到该编号信息");
            }
        }
    }

根据ID进行查询商品,结算出该商品的总价

private static void jiesuanGood(Goods[] shopCar,Scanner scanner) {
    System.out.println("请输入你要查询的编号:");
    int x=scanner.nextInt();
    double sum;
    for (int i = 0; i < shopCar.length; i++) {
        Goods g=shopCar[i];
        if (g.id==x){
            sum=g.price*g.buyNumber;
            System.out.println(g.name+"的商品总价格为"+sum);
            break;
        }else{
            System.out.println("没有查询到该编号信息");
        }
    }
}

构造器

  • 真正知道对象具体是通过调用什么代码得到的?

  • 能够掌握为对象赋值的其他简便的写法?

  • 为以后学习面向对象编程的其他内容做支撑。

  • 构造器通常是给对象的成员变量进行初始化操作的

    构造器是定义在类中的,可以用于初始化一个类的对象,并返回对象的地址。

    构造方法不能通过”对象.“这种方式来获取

    我们目前只知道用new进行调用

    构造器没有返回值,但是也不能写void

    构造器的格式

    修饰符 类名 (形参列表){
    ……
    }
    
    例如:
    public class Car{
    ……
    //无参数的构造器
    public Car(){
    ……
    }
    //有参数的构造器
    public Car(String n,double p){
    
    }
    }
    
    调用构造器的格式:

    ​ 类 变量名=new 构造器;

    构造器的分类和作用

    无参数构造器(默认存在的):初始化对象的时候,成员变量的数据采用默认值

    ​ 若是没进行创建构造器,会赠送一个默认的构造器。

    有参数构造器:在初始化对象的时候,同时可以接受参数为对象进行赋值

    案例:
    生成一个Car类,里面存放一个无参数构造方法和一个有参数的构造方法
    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;
        }
    }
    生成一个Test类,进行调用无参数的构造方法和有参数的构造方法,在调用有参数的构造方法的时候,需要注意进行传参。
        public static void main(String[] args) {
            Car car=new Car();
            System.out.println(car.name);
            System.out.println(car.price);
        
            Car car1=new Car("奔驰",561);
            System.out.println(car1.name);
            System.out.println(car1.price);
        }
    运行之后的结果为:
    无参数
    null
    0.0
    有参数
    奔驰
    561.0
    
    
    注意事项

    一旦定义了有参数的构造器,系统就不会赠送无参数构造器,需要自己写一个无参数的构造器,才可以使用,否则会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值