java攻城狮之路-面向对象(1)

华为OD机试真题 C 实现【大炮攻城 / 攻城战】【2023 Q1 | 200分】 一支攻城部队, 有若干种大炮各座, 以及数量有限的火药,每种大炮的威力不尽相同,且在每次开火之前都需要一定时间填充火药, 请你帮助指挥官在给定的时间结束之前或者火药存量耗尽之前给予城池最大的打击。 阅读详情

面向对象


1.1 万物皆对象

我们是怎么认识世界的?
  人类从小就不断的接触到各种各类存在世界上的各种生物,然后通过事物的公共特性,将它们归类,所以以后就不会出现见到猫叫老虎。那么我们在现实生活中,是通过具体的某个事物归纳总结它们的公共特性然后产生类那么类就描述了该种事物的的共性别,相当于造事物的图纸,我们可以根据这个图纸去做出具体的实体对象。

对象:在现实生活中存在具体的一个事物
类:实际就是对某种类型事物的共性属性与行为的抽取。
人类认识世界: 对象—-类。
在java中: 类 —-对象。

  使用计算机语言就是不断的在描述现实生活中的事物。
java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。
对象即是该类事物实实在在存在的个体。
类与对象的关系如图


这张图就可以理解为:
类就是图纸
汽车就是堆内存中的对象

1.2 面向对象的概述

  “面向对象”(英语:Object Oriented,简称OO)是一种以事物为中心的编程思想。
  面向对象程序设计(英语:Object-oriented programming,缩写:OOP),是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
  面向对象时相对于面向过程而已的(c则是一个典型的面向过程的语言),站在面向对象的角度去看问题,你则是对象的动作的指挥者。如果站在面向过程的角度去看问题,你则是动作的执行者。

1.3 对象

  对象(object)代表现实世界中可以明确标识的一个实体。例如:一个学生、一张桌子、一间教室,一台电脑都可以看做是一个对象。每个对象都有自己独特的状态标识和行为
对象的属性(attribute,或者状态(state)),学生有姓名和学号,该学生特有的姓名和学号就是该学生(对象)的属性。
对象的行为(behavior),是由方法定义,调用对象的一个方法,其实就是给对象发消息,要求对象完成一个动作。可以定义学生对象具备学习的行为。学生对象可以调用学习的方法,执行学习的动作

如何寻找合适的对象?
1.sun已经定义好了很多类
2自定义类,通过自定义类来创建对象使用

最好是从自定义类开始学习,下面就讲一下自定义类的三步骤

自定义类的三步骤
1.自定义类
2.通过类创建对象
3.访问对象的属性或者调用对象的功能

1.4 面向对象的特征

封装(encapsulation)
继承(inheritance)
多态(polymorphism)
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系.

1.5 使用java来描述事务(对象初次见面)

需求:通过Java语言定义一个汽车类,并生产出汽车,有颜色,轮胎个数, 有运行的功能
分析:
  如何描述现实世界中的事物,描述该事物的属性和行为,汽车具有颜色和轮胎数的属性,具备运行的行为。
如何使用Java语言进行转换?
根据对应关系:
  属性:类中的成员变量
  行为:类中的成员函数
  那么定义Java类就是定义一个类的成员。汽车类具备的成员是:颜色,轮胎数,运行方法。
实现:
Car类定义流程:
1、使用class 关键字 定义类

  • class空格 类名。类名就是标识符,命名规则,单词的首字母大写,多个单词的首字母大写。注意:不是规定,但是最好遵守

  • 类名后紧跟一对{}表示类的开始和结束。

2、汽车有轮胎数 int num

  • 不需要给num初始化值,因为汽车轮胎数不确定,有4,有6,有8

3、有颜色 String color

  • 为什么使用String 例如定义颜色”红色”是字符串类型

  • 也不需要初始化值

4、跑的行为(方法、函数) void run(){ }

  • 方法中执行输出语句。syso(“跑啦。。。。”);

    public class Car {

    String color;// 成员变量
        int num; // 成员变量

        // 成员函数
        void run() {
            System.out.println(color + "的车,轮胎数:" + num + "个,跑起来了");
        }
    }

1.6 对象的创建

创建Car对象

  • 1.使用new关键词,就像new数组一样

  • 2. 需要给型的汽车起一个名字,car

  • 3. 变量都是有类型的,car属于什么类型,属于Car类型,叫做类类型

  • 4. Car car=new Car();

  图纸画好了,类定义成功了。如何根据图纸生产汽车,在Java中如何根据类来生产一个对象。
  Java中生产汽车比较简单,通过一个关键字”new”, 通过 new Car(); 就在内存中产生了一个实体,汽车对象就生产出来了。
  汽车对象生产出来后,还没有名字,为了方便使用,需要起一个名字。就用小写的C 来表示新车的名字。
  Java中的变量都需要有类型。那么c 是什么类型呢?c 是Car类型,所以c也叫做类类型变量。

    class CarDemo {
        public static void main(String[] args) {
            // java 中创建对象,使用new关键字。在堆内存中开辟了空间。产生了一个实体。
            Car c = new Car();
            //为了方便使用生产的汽车,就起了一个名字。
            //那么c是什么类型,是Car类型。叫做类类型变量。
            //注意 c是持有的引用,新生产的汽车并没有直接赋值给c,持有的只是一个引用。c就想电视遥控器一样。
            c.run();  //使用对象的功能。
        }
    }

1.7对象成员的调用

有了car对象,调用对象成员

  • 1. 成员变量

  • 2. 成员方法

    public class CarDemo {
        public static void main(String[] args) {
            Car c = new Car();
            //对象名.成员变量名将返回成员变量中存储的数值
            int num=c.num; 
            System.out.println(num);

            //对象名.成员变量名,也可以给成员变量赋值
            c.num = 4;
            c.color = "black";

            //对象名.成员方法();
            c.run();
        }
    }

1.8 局部变量和成员变量

成员变量: 定义在类中变量
局部变量: 定义在方法中变量

成员变量与局部变量的区别:
1、应用范围

  • 1. 成员变量在整个类内都有效

  • 2. 局部变量只在其声明的方法内有效

2、生命周期

  • 1. 成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失

  • 2. 局部变量: 使用完马上释放空间。

3、存储位置

  • 成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才垃圾回收清理 局部变量存在栈内存中,当不在使用时,马上就会被释放。

4、初始值

成员变量它存储在堆中,如果没有赋初值,它有默认值。

类型名初始值
整数byte、short、int、long0
char‘\uoooo’就是’ ‘
booleanflase
StringNull
引用数据类型Null

局部变量,如果要想使用必须手动初始化.

  • 方法中,参数列表中,语句中。
  • 必须给初始化值,没有初始值,不能使用。
  • 在栈内存中。

1.9 内存分析

代码一

    //汽车
    class Car {
        //汽车应该具备的属性
        int num;
        //汽车具备的颜色
        String color;
        //汽车跑的行为
        public void run(){
            System.out.println(num+"轮子的汽车跑起来啦");
        }
    }
    public class CarDemo{

        public static void main(String[] args)
        {   //创建实体,并且给该实体起一个名字
            Car c = new Car();
            c.color = "red";
            c.num = 4;
            c.run();//指挥车进行运行。调用格式:对象.对象成员

        }
    }

代码二

    public static void main(String[] args)
        {   //创建实体,并且给该实体起一个名字
            Car c = new Car();
            Car c1 = new Car();
            c.color = "red";
            c1.num = 4;
            System.out.println(c1.color);
            c.run();//指挥车进行运行。调用格式:对象.对象成员

        }

代码三

    public static void main(String[] args)
        {   //创建实体,并且给该实体起一个名字
            Car c = new Car();
            Car c1 = c;
            c.color = "red";
            c1.num = 4;
            c1.color = "green";
            System.out.println(c1.color);
            c.run();//指挥车进行运行。调用格式:对象.对象成员

        }

Java炫酷烟花③(完整代码) Java语言实现炫酷烟花动画的完整代码。 下载代码 下载链接:我是一只有趣的兔子,感谢你的喜欢。 阅读详情

相关推荐

免费测试国外大模型Claude 3.7 Sonnet API:无需api key(秘钥)

Claude 3.7 Sonnet是Anthropic公司推出的第三代Claude系列AI模型中的中规模版本(2024年发布),在性能与效率间实现平衡。该模型基于改进的Transformer架构,支持128K上下文窗口,擅长复杂推理、数学计算和创意写作,在GSM8K数学基准测试中准确率达92%。其采用"宪法AI"伦理框架,通过多轮对抗训练减少有害输出,同时新增多模态理解能力(可解析图片/图表内容)。Claude 3.7 Sonnet是Anthropic推出的高效轻量级大模型,主打快速响应与成本优化。

Explinks的博客 1498

Java 中创建一个对象的 6 种方式

如题:Java 中创建一个对象的 6 种方式

晓呆同学的专栏 1361

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

黑马程序员.Android攻城狮.JAVA基础.1.3.Java面向对象

Java面向对象 ---------- android培训、java培训、期待与您交流!---------- ---------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------

攻城狮的专栏 951

别再死记硬背了!用Multisim仿真5分钟搞懂运放电压跟随器到底要不要加反馈电阻

本文通过Multisim仿真实验,深入解析运放电压跟随器中反馈电阻的必要性。实验对比不同阻值对电路性能的影响,揭示反馈电阻在提供偏置电流通路、提升高频稳定性和ESD保护中的关键作用,并给出工程实践中的优化建议,帮助工程师快速掌握运放电路设计要点。

weixin_42641998的博客 371

2026国内Claude Code保姆级教程:安装、避坑、防串台全优化

安装 Claude Code CLI + 切换 npm 国内镜像优先配置固定关闭:自动联网、自动项目扫描VSCode 内置终端直接用,不装多余插件会话隔离+指令约束,彻底解决 Rust、小程序 跨语言串台。

lpfasd123的博客 2555

【致敬未来的攻城狮计划】第1期 作业汇总贴 + 获奖公布

致敬未来的攻城狮计划第1期,成果如何?

一个专注于嵌入式IoT领域的架构师,深耕IoT领域多年,深度掌握IoT领域的相关技术栈,包括但不限于RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、嵌入式IoT系统的架构设计等。 7042

Google Earth Engine ——在 GEE 中计算面积含各类要素计算(土地分类为例)

在遥感应用中工作时,许多操作需要计算面积。例如,需要在监督分类后计算每个类所覆盖的面积,或者找出灾害后区域内受影响的面积。计算栅格和矢量的面积在大多数软件包中是一个简单的操作,但在 Google Earth Engine 中以稍微不同的方式完成 - 这可能会让初学者感到困惑。在这篇文章中,我将概述计算矢量和图像面积的方法。我们将涵盖以下主题,从简单到复杂。 特征的面积计算,即矢量数据 图像的面积计算(单类) 按类别计算图像的面积 按区域按类别计算图像的面积 按年按地区按类别计算图像的面积 准备数据

此星光明博客 4024

三国麻将攻城的java_Java 攻城狮学习线路图

图1 Java攻城狮学习线路图01轻轻的轻轻的我走了正如我轻轻的来一切都是那么的轻一切都是那么的自然时光荏苒,来也匆匆,去也匆匆一眨眼,已不再是学校温室里的巨婴一不留神,已以小学生身份进入社会这个大学堂半月有余02学校里学习的东西和进入社会所学的东西是有一定出入的。在学校里的学习主要是一个引导,学的面很广、很杂,而工作中则需要学会主动学习,学会针对性学习。这两天在网上逛了逛,看了一下别人规划的 J...

weixin_42298507的博客 728

【AI智能体】Langchain 主流大模型调用与对话API使用详解

【AI大模型】Langchain 模型调用与对话API使用详解

congge_study的博客 409

Claude Code 错误解决方案: Request Timed Out 超时 原因、配置与解决方案

Claude Code 抛出 Request Timed Out 不仅可 能是网络问题,更大概率是 API 高负载或超大响应导致。本文从 默认超时机制出发,拆解三种根因场景,给出 API_TIMEOUT_MS 环境变量调优与任务拆分策略,帮助开发者在保证稳定性的同时 避免误判网络故障。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 900

联合Java攻城狮社区,推出Java技能树有奖征文活动,期待你的加入

一、立志存高远,笃行践初心 三更灯火五更鸡,正是男儿读书时。 黑发不知勤学早,白首方悔读书迟。 立志,标定人生方向;奋斗,创造人生价值,二者相辅相成,互相促进。 大部分程序员的「 目标 」都是成为一名优秀的工程师,一名可以统览全局的「 架构师 」。 二、如何学习Java? 很多小伙伴初期学习Java的时候很迷茫,无从下手,Java书籍太厚,看之乏味,Java视频太多,杂乱无章。 三、哪吒造Java技能树 1、优快云官方技能树 既然官方只有Python技能树,没关系,哪吒造一个山..

学Java,找哪吒 1万+

13、数据可视化与分组操作:Danfo.js 实战指南

本文深入介绍了如何使用 Danfo.js 进行数据可视化与分组操作。内容涵盖多种图表的创建与配置,如折线图、散点图、箱线图、小提琴图、直方图和柱状图,并结合 Plotly.js 实现丰富的交互式可视化效果。同时,详细讲解了数据聚合的‘分割-应用-组合’模式,包括分组数据、遍历分组、apply 方法及 agg 聚合操作,帮助开发者高效处理和分析结构化数据。适用于 Dnotebook、HTML 及主流前端框架的应用场景。

o1p2q3r的博客 99

华为|A.I攻城狮|五轮面经|2021面试总结|

前言 不知道有没有帮助,就权当记录一下。 本人大学坐标英国,具体学校就不说了怕拉低同校同学平均水平。。12月左右华为各种部门轮番轰炸我linkedin,我就抱着试试的心态投了一下A.I攻城狮的岗位。(主要华为20年毕业的也算校招这点比较舒服) 一面:笔试 怕算泄露机密,我就简单说说。 第一题:约瑟夫环。很抱歉我没研究过这货的数值解,直接暴力双向链表。。。 第二题:简单DP。超基础DP应用,跟往袋子里装货物题应该难度差距不大,秒杀。 第三题:图!!!!!!!我万万没想到会考图。大二学的图的算法早就忘得一干二净

weixin_49494194的博客 2301

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android优秀资源整理合集(论菜鸟到高级攻城狮)

时间一长,发现在平时逛论坛,订阅号或者其他人推荐的优秀干货,浏览器随机的收藏已经太乱了。抽空整理下,顺便真心推荐大家看看。至少对于我来说,从菜鸟到现在的进步全靠它们!! Android基础相关 1.Android实现数据存储技术 2.AndroidDevTools(里面有开发所需的各种软件,SDK,JDK等等) Android 开源库 1.Android酷炫实用的开源框架(UI框

为梦拼命的Android攻城狮 2579

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java攻城狮笔记1——学习路线图

Java攻城狮除了不断的在编程实践中积累经验,还需提前了解各个阶段具体的技术要点,新进攻城狮应该熟练掌握“java核心编程技术”知识点,逐步完成初、中、高级的技术储备,最终登顶系统架构师,管理能力出众的攻城狮还可以继续向CTO发起挑战。

baolen1的专栏 790

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

攻城狮常见面试题题解

攻城狮常见面试题题解 1.Http与Https的区别: http(HyproText Transfer Protocol,超文本传输协议) 是明文方式传输的,数据是未加密的,是不安全的;而https(http+ssl)是在http通信的基础上,通过ssl对数据包加密,是安全的。 https是需要ca安全证书验证的,ca证书一般需要收费。 http连接的接口是80,https连接的接口是443. http在建立TCP连接进行三次握手时需要传交换3个数据包;而https除了建立TCP连接三次握手的3个

weixin_42265727的博客 173

一位Java开发攻城狮的自我修养之项目篇

攻城狮的自我修养之项目篇基础知识Java基础SpingBootSpringCloudLeetCode题库大数据项目实战商城系统人事管理系统论坛系统博客系统 基础知识 Java基础 architect-awesome 后端架构师技术成长路线图 toBeTopJavaer Java相关基础知识博客体系 advanced-java 互联网Java工程师基础知识,涵盖高并发,分布式,高可用,微服务,海量数据处理等领域知识 technology-talk 汇总Java常用技术框架,开源中间件,系统架构,数据库,大公

攻城狮Chova的博客 1737

【致敬未来的攻城狮计划】第3期 作业汇总贴 + 获奖公布(文末荐书)

时间过得真快,距离 【致敬未来的攻城狮计划】第3期 的发起,已经过去有些时间了,让我们一起来看看学员们的学习成果吧。【已结束】【重磅推出】《致敬未来的工程师计划》,第3期计划圆满结束。。。-优快云社区本期计划一共吸引了(审核通过)8位童鞋加入学习计划,其中不乏嵌入式专业、物联网专业、计算机科学专业、电子兴趣爱好者等,多重身份的朋友。大家的学习氛围非常棒,一起讨论,一起研究,一个月的学习质量可能抵上你一个学期的学习。以下是他们的简要介绍,欢迎大家去他们的博客主页了解更多;

m0_75279794的博客 331

大白成为Java软件攻城狮的第一天(DOS和java特性、面向对象)

1、window中常见的Dos命令 输入cmd -cls 清除屏幕 -exit 退出当前Dos命令窗口 -dir 列出当前目录下所有的子文件/子目录 -cd 命令 *cd命令表示:change directory【改变目录】 *使用方法:cd 目录的路径 -cd… 回到上级目录 -cd/ 回到跟目录 -怎么切换盘符? c:回车 d:回车 2、文件扩展名必须要以 .java结尾的扩展名 3、Java语言发展史 java语言诞生于1995年。 -什么是JDK? Java开发工具包 做Java开发必须安装的一

大白的成长之路 6818

android攻城狮多媒体开发,Android攻城狮系列视频教程

Android攻城狮系列视频教程Android应用大部分是使用Java语言进行开发的,Android攻城狮系列视频教程同样使用的是Java语言,所以在学习本门课程前必须掌握Java的基础语法以及面向对象编程,同时要求童鞋们对Android应用有简单的认识。而在本视频教程的第二门课中,将讲解Android应用必备的菜单、对话框和动画等的使用,对于不熟悉Android开发的童鞋来说会有一定的难度,所以...

weixin_30097621的博客 177

写给即将正在找工作的Android攻城狮(1)

综上所述就会出现一种情况,公司只招有经验且有实力的同学,那么一些经验的同学或者基础相对薄弱的同学就处于劣势了,这时候公司就会挑人了,公司想要的就是能力强要钱少的人,甚至有部分公司一看到是培训的或者刚毕业的同学,连面试机会都不会给。这里要给第一类以及即将成为第一类的同学一些建议,在学校的时候其实可以练就出很有竞争力的能力,也可以做很多有经验的同学正在做的事,比如可以在Gihutb做一些自己喜欢的项目,在找工作的时候也是一个加分项。但是千万不要过度包装自己,尤其是经验包装,我很不赞同这一点。

2401_84132357的博客 816

1.攻城狮成长记录===NTGM

立志成为一个super-Java攻城狮,竭吾所能,尽吾全力 目前已学习一小段时间,写贴记录学习,以及解决遇到的问题,欢迎有志之士共同交流问题,更加欢迎大牛来指点,谢谢!!! 1.关于搭建Java开发环境, 1.以个人安装使用JDK9为例,先在官网下载开发工具;(官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-do...

weixin_42654915的博客 189

Java 攻城狮面试题 01_Java 基础

Java基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的 运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。 简单来说:如果你需要运行 Java 程序,只需安装JRE 就可以

李鲤驴的博客 908

java攻城狮_初级Java攻城狮面试指导(一)

一、概要初级JavaWeb工程师的面试准备Java基础知识面试指导Java面向对象面试指导JSP面试指导MySQL数据库基础面试指导Servlet面试指导二、初级JavaWeb工程师的面试准备初级JavaWeb工程师是职业发展的第一步组成人群:应届计算机专业毕业生和初学者工作内容:能够独立完成指定的模块开发面试形式:笔试和问答要求:熟知所涉及的知识点,具有独立编码能力主要知识点:Java基本语法知...

weixin_42349272的博客 138

php个攻城狮,如何成为一枚高贵的 PHP 攻城狮

语言特色PHP确实是一门特色的语言(仅次于Python)。面向对象自PHP5开始,PHP具有完整的对象模型,包括类,抽象类,接口,继承,构造函数,反射,克隆和异常等。以下是PHP5.3-PHP7.2中关于面向对象的新特性:命名空间(PHP5.3,更好的组织类)性状 (PHP5.4,解决了多继承场景的问题)匿名类(PHP7.0)导入一组类(PHP7.0)类常量的可见性(PHP7.1)多异常捕获处理 ...

weixin_42311022的博客 158
上一篇: html5框架
下一篇: java攻城狮之路-面向对象(2)
柴米丨油盐
博客等级 码龄10年 16粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值