day10_面向对象基础

news2024/12/28 10:00:06

今日内容

零、 复习昨日
一、面向对象的概念
二、面向对象编程
三、内存图

image-20230210100057175

image-20230210100147071

image-20230210101311328

零、 复习昨日

见晨考题

每日一数组题

写一个方法 用于合并两个int类型的数组 合并法则如下
{1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0}

package com.qf.array;

import java.util.Arrays;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc
 */
public class Homework {

    /**
     * 写一个方法 用于合并两个int类型的数组  合并法则如下
     *    {1,2,5,8,9}{1,3,0}---->{1,2,5,8,9,1,3,0}
     */
    public static void main(String[] args) {
        concat();

    }

    // 合并
    public static void concat() {
        int[] arr1 = {1,2,5,8,9};
        int[] arr2 = {1,3,0};

        // 创建新数组
        int[] arr3 = new int[arr1.length + arr2.length];

        System.out.println(Arrays.toString(arr3 ) );

        // 手动拷贝
        // for (int i = 0; i < arr3.length; i++) {
        //
        //     if(i < arr1.length) {
        //         // 取出arr1中的元素
        //         arr3[i] = arr1[i];
        //     } else {
        //         arr3[i] = arr2[i - arr1.length];
        //     }
        // }

        // 工具拷贝
        System.arraycopy(arr1,0,arr3,0,arr1.length);

        System.arraycopy(arr2,0,arr3,arr1.length,arr2.length);

        System.out.println(Arrays.toString(arr3 ) );
    }
}

一、面向对象的概念

Java是一门面向对象的编程语言.

补充: c语言面向过程 c++ 半面向对象半面向过程

面向过程编程

开发过程中的所有细节都要编写.

假设: 使用一台电脑敲代码. 其中所有零件都需要自己去造.

面向对象编程

假设: 使用一台电脑敲代码. 找到卖电脑的人,告诉我需要一台电脑,商家就给我一台电脑,可以直接使用. (学会当老板,使唤人)

把大象装进冰箱怎么实现?



什么是类?

类: 人以类聚,一类商品

类: 类一组具有相同属性和行为的对象的集合.

神仙类;;;;;手机类

什么是对象?

对象: 将类实例化的一个具体体现.

对象能将属性和行为具体表现出来.

太上老君;;;;;手里正在拿的那个手机

什么是属性?

属性: 类的一些特点/特征

年龄非常大,不会死 ;;;; 品牌,重量,价钱,颜色等

什么是行为?

行为:就是方法,对象能做的动作

炼丹;;;; 发短信,打电话,玩游戏,聊天


总结

以上四个是什么关系?

  1. 类中有属性和方法
  2. 对象由类创建出来,对象内部有它自己具体的属性和方法
  3. 对象可以将属性和行为表现出来

二、面向对象编程

利用上面这些知识,完成面向对象编程(OOP)

2.1 类的定义

以手机为例,完成编程

package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc 手机类
 */
public class Phone {

    // 属性定义:
    // [访问修饰符] 数据类型 变量名;
    // 访问修饰符,可写可不写
    String brand;  // 品牌
    double price;  // 价钱
    String color;  // 颜色
    int memory;    // 内存

    /*
     * String brand; 属性后要不要设置值?
     * 不加值String brand; 这个手机类的这个属性不固定
     * 加值 String brand = "华为"; 这个手机类型品牌属性固定,
     *  意味着后面通过手机类创建出的手机对象的品牌属性直接就是"华为"
     * ----------------------------------
     * 其实属性设置不设置值,就是一个变量默认值的问题
     */


    // 方法(今天往后类中的方法不要加static)
    // (自己写练习题时加static)
    public void call() {
        System.out.println("打电话" );
    }


    public void play() {
        System.out.println("打游戏");
    }
}

练习: 车类

package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc 类中包含属性和方法
 *       类的成员有属性和方法
 *
 *       类就将相当于模板
 *       对象就是根据模板创建出的实例
 */
public class Car {
    // 成员属性
    String brand;
    double price;
    String color;
    String num;

    // 成员方法
    public void run(){
        System.out.println("跑" );
    }

    public void takePeople() {
        System.out.println("载人" );
    }

    public void didi() {
        System.out.println("滴滴" );
    }
}

2.2 创建对象

创建对象又叫实例化

    public static void main(String[] args) {

        // 创建对象的语法
        // 类名 对象名 = new 类名();
        Phone phone = new Phone();
        // 数据类型 变量名 = 值;
        // int[] arr = new int[3];

    }

2.3 使用对象

使用对象就是创建对象,使用对象内部的属性和方法

package com.qf.oop;

/**
 * --- 天道酬勤 ---
 *
 * @author QiuShiju
 * @desc
 */
public class TestOOP {


    /**
     * 主方法中测试
     */
    public static void main(String[] args) {

        // 创建对象的语法
        // 类名 对象名 = new 类名();
        Phone phone = new Phone();
        // 数据类型 变量名 = 值;
        // int[] arr = new int[3];

        // 使用对象,即使用属性和使用方法
        /*
        * 使用属性:
        * 1 获得属性值
        *       数据类型 变量名 = 对象名.属性;
        * (刚创建的对象内的属性都是该数据类型的默认值)
        * 2 设置属性值
        *       对象名.属性 = 值;
         */
        // 属性取值
        double price = phone.price;
        System.out.println("手机的价格"+price );

        String brand = phone.brand;
        System.out.println("手机的品牌:"+brand );

        String color = phone.color;
        System.out.println("手机的颜色:"+color );

        int num = phone.memory;
        System.out.println("手机内存"+num+"G" );

        // 属性赋值
        phone.brand = "HUAWEI";
        phone.price = 2999.0;
        phone.color = "黑曜石";
        phone.memory = 128;

        // 再次取值看效果
        double price2 = phone.price;
        System.out.println("手机的价格"+price2 );

        String brand2 = phone.brand;
        System.out.println("手机的品牌:"+brand2 );

        String color2 = phone.color;
        System.out.println("手机的颜色:"+color2 );

        int num2 = phone.memory;
        System.out.println("手机内存"+num2+"G" );

        // =================================================

        // 使用方法,就是对象调用方法,让方法执行
        // 对象名.方法名();
        phone.call();
        phone.play();
    }
}

练习: 创建车的对象,调用属性,调用方法

    public static void main(String[] args) {

        // 对象创建
        Car car = new Car( );

        // 取出属性
        System.out.println(car.price );
        System.out.println(car.color );
        System.out.println(car.brand );
        System.out.println(car.num );


        // 属性赋值
        car.price = 190000;
        car.brand = "BYD";
        car.color = "玫瑰红";
        car.num = "豫A66666";

        System.out.println(car.price );
        System.out.println(car.color );
        System.out.println(car.brand );
        System.out.println(car.num );

        // 调用方法
        car.run();
        car.takePeople();
        car.didi();
    }

三、内存图

以创建对象过程画图.

凡是new,都会在内存开辟空间,创建对象,会有地址值
在这同时,对象内部的属性和方法会初始化,赋默认值
完成对象创建,将地址值赋值给对象名
后续通过对象.属性找到堆中的对象的属性给其赋值
后续通过对象方法找到堆中对象的方法让其进栈执行

一个对象的内存图

image-20230210160640794


一个类创建多个对象

 /**
     * 一个类可以创建出多个对象
     * 每个对象内部都有属于自己的属性和方法,对象之间互不影响
     */
    public static void main(String[] args) {

        // 创建1个对象
        Car car = new Car();
        car.brand = "玛莎";
        System.out.println(car.brand );


        // 再创建1个
        Car car2 = new Car();
        car2.brand = "劳斯莱斯";
        System.out.println(car2.brand );

        // 再创建
        Car car3 = new Car();
        car3.brand = "宾利";
        System.out.println(car3.brand );

    }

image-20230210162213576


多个引用(对象名)指向同一个对象

   public static void main(String[] args) {

        // 对象1
        Car car1 = new Car( );

        // 对象2
        Car car2 = new Car();
        car2.num = "豫A66666";

        // car2被car1赋值,其实是被背后的地址赋值
        // 赋值后,car2和car1执行同一个内存对象
        car2 = car1;

        car1.num = "豫A88888";
        System.out.println(car1 );
        System.out.println(car1.num );

        System.out.println("--------" );
        System.out.println(car2 );
        System.out.println(car2.num );
    }

image-20230210163939688

作业

写12生肖类
完成作业pdfT10,T11
复习(看每天笔记大纲,每天昨天题抽1-2题再重复)
预习(下一周全是面向对象(构造方法,局部变量成员变量,this super static, 封装,继承,多态,抽象,接口))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/338025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue+uniapp前后端分离图书阅读系统设计与实现

博主介绍&#xff1a;✌全网粉丝3W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品&#xff1a;《微服务实战》专栏是本人的实战经验总结&#xff0c;《S…

MySQL在Linux上的四种安装方式

目录 前言 一、仓库安装 二、本地安装 三、容器安装 四、源码安装 前言 博主的配置信息&#xff1a; Windows版本&#xff1a;Win10 VMware虚拟机版本&#xff1a;Vmware Workstation Pro 17 Linux版本&#xff1a;Red Hat Enterprise Linux 9.1 MySQL版本&#xff1a;My…

一篇文章搞懂Cookie

目录 1 什么是Cookie 2 创建Cookie 3 浏览器查看Cookie 3.1 浏览器查看Cookie的第一种方式 3.2 浏览器查看Cookie的第二种方式 4 获取Cookie 5 修改Cookie 6 Cookie编码与解码 6.1 创建带中文Cookie 6.2 读取带中文Cookie 6.3 获取中文Cookie请求效果 6.4 解决创建和…

grafana9 使用消息模板配置发送企业微信(wecom)

一、grafana9告警设置&#xff1a; 1、进入告警消息模板介面 2、grafana 消息模板设置 template name : API_msg_tpl #名字随便 {{ define "myalert" }} **警报时间:** {{ .StartsAt.Format "2006-01-02 15:04:05 " }} {{ if gt (len .Labels) 0 }}**…

毕业5年,从月薪3000到年薪40w,我掌握了那些核心技能?(建议收藏)

大家好&#xff0c;我是静静~~是一枚一线大厂的测试开发工程师很多读者私信问我&#xff0c;自己时间不短了&#xff0c;随着工作年限的不断增长&#xff0c;感觉自己的技术水平与自己的工作年限严重不符。想跳槽出去换个新环境吧&#xff0c;又感觉自己的能力达不到心仪公司的…

Python_pytorch

python_pytorch 小土堆pytotch学习视频链接 from的是一个个的包&#xff08;package) import 的是一个个的py文件(file.py) 所使用的一般是文件中的类(.class) 第一步实例化所使用的类,然后调用类中的方法&#xff08;def) Dataset 数据集处理 import os from PIL impo…

本地(window)使用alist和RaiDav网盘挂载

一、背景 百度网盘的限速可能会让你转战阿里云盘&#xff0c;但是阿里云盘的缺点在于不能分享&#xff0c;网络上的资源都是通过各类网盘来分享的&#xff0c;这样就会让你可能同时拥有不同网盘的账号。 那么我们有没有一款工具&#xff0c;可以将这些网盘资源聚合一下&#xf…

RMQ--区间最值问题(在更)

RMQ&#xff08;Range Minimum/Maximum Query&#xff09;RMQ解决的问题ST算法 O(nlogn)线段树例题数列区间最大值最敏捷的机器人天才的记忆Frequent values总结&#xff08;ST和线段树对比&#xff09;RMQ解决的问题 RMQ是一个解决多个区间最值查询的算法,即区间最值查询&…

MySQL 创建数据表

在创建数据库之后&#xff0c;接下来就要在数据库中创建数据表。所谓创建数据表&#xff0c;指的是在已经创建的数据库中建立新表。 创建数据表的过程是规定数据列的属性的过程&#xff0c;同时也是实施数据完整性&#xff08;包括实体完整性、引用完整性和域完整性&#xff09…

LwIP系列--线程通信消息结构

一、目的如果有小伙伴移植过LwIP&#xff0c;那么你肯定知道在LwIP源码中tcp/ip协议栈是作为一个单独的线程运行的&#xff0c;那么就有这样一个问题&#xff0c;我们从mac外设上收到的以太网数据包是如何交给tcp/ip线程进行处理的&#xff0c;用户发送的数据又是如何经过协议栈…

不学Python迟早会被淘汰?Python真有这么好的前景?

最近几年Python编程语言在国内引起不小的轰动&#xff0c;有超越Java之势&#xff0c;本来在美国这个编程语言就是最火的&#xff0c;应用的非常非常的广泛&#xff0c;而Python的整体语言难度来讲又比Java简单的很多。尤其是在运维的应用中非常的广泛&#xff0c;所以之前出了…

Ubuntu20.04无线网卡驱动安装

文章目录一.未安装无线网卡驱动的Ubuntu20.04联网方式二.Ubuntu20.04无线网卡驱动安装UbuntuU盘启动盘安装好Ubuntu 20.04之后&#xff0c;发现没有无线网络&#xff0c;不过有线可以用。一.未安装无线网卡驱动的Ubuntu20.04联网方式 比较简单的就是直接拉一条网线进行连接&am…

【C语言】宏定义 结构体 枚举变量的用法

目录 一、数据类型 二、C语言宏定义 三、C语言typedef重命名 四、 #define与typedef的区别 五、结构体 六、枚举变量 补充学习一点STM32的必备基础知识 一、数据类型 二、C语言宏定义 关键字&#xff1a;#define 用途&#xff1a;用一个字符串代替一个数字&#xff0c;…

214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

大家好&#xff0c;我是徐公&#xff0c;六年大厂程序员经验&#xff0c;今天为大家带来的是动态心形代码&#xff0c;电视剧 《点燃我温暖你》同款的&#xff0c;大家赶紧看看&#xff0c;拿去向你心仪的对象表白吧&#xff0c;下面说一下灵感来源。 灵感来源 今天&#xff…

2023-02-10 - 6 聚合

当用户使用搜索引擎完成搜索后&#xff0c;在展示结果中需要进行进一步的筛选&#xff0c;而筛选的维度需要根据当前的搜索结果进行汇总&#xff0c;这就用到了聚合技术。聚合的需求在很多应用程序中都有所体现&#xff0c;例如在京东App中搜索“咸鸭蛋”&#xff0c;然后单击搜…

简述操作系统的系统中断

系统中断 系统中断是指 CPU 对系统发生的某个事件做出的一种反应&#xff1a;CPU 暂停正在执行的程序&#xff0c;保留现场后转去执行相应的处理程序&#xff0c;处理完该事件后再返回断点继续执行被打断的程序。 中断可以避免 CPU 轮询等待某条件成立&#xff0c;减小系统开…

2023-02-10 - 5 文本搜索

与其他需要精确匹配的数据不同&#xff0c;文本数据在前期的索引构建和搜索环节都需要进行额外的处理&#xff0c;并且在匹配环节还要进行相关性分数计算。本章将详细介绍文本搜索的相关知识。 本章首先从总体上介绍文本的索引建立过程和搜索过程&#xff0c;然后介绍分析器的…

离子阱量子计算机

1.新闻 2020年6月&#xff0c;科技制造企业霍尼韦尔&#xff08;Honeywell&#xff09;发布第一台离子阱量子计算机H0&#xff0c;它拥有64量子体积&#xff0c;它是IBM和谷歌同时期量子计算机的两倍。公司表示之所以能取得这一成就缘于他们2015年在一篇科学论文中展示的量子电…

Docker 容器与容器云读书笔记(一)

最近都没时间看书&#xff0c;闲暇之余看看书&#xff0c;写写笔记&#xff0c;记录一下这难得的时光。 docker容器的出现 2013年初&#xff0c; 一个名字从云计算领域横空出世&#xff0c;并在整个IT行业激起千层浪&#xff0c;这就是Docker。Docker选择容器作为核心和基础&…

与六年测试工程师促膝长谈,他分享的这些让我对软件测试工作有了全新的认知~

不知不觉已经从事软件测试六年了&#xff0c;2016年毕业到进入外包公司外包给微软做软件测试&#xff0c; 到现在加入著名的外企。六年的时间过得真快。长期的测试工作也让我对软件测试有了比较深入的认识。但是我至今还是一个底层的测试人员&#xff0c;我的看法都比较狭隘&am…