?在上一篇Java零基础系列文章中,我们讲到了Java中的方法。今天的核心内容是Java-面向对象。很多初学者在刚接触面向对象的时候都头晕。什么是班级?什么是对象?他们的关系如何?等待这些问题弹出。废话不多说,一起来学习吧!面向对象1、面向过程和面向对象有什么区别?从语言入手:对于C语言来说,它是完全面向过程的。对于C++语言来说,它是一半面向过程,一半面向对象。(C++是半面向对象的)对于Java语言来说,它是完全面向对象的。什么是面向过程的开发?面向过程的开发方式的主要特点是:关注步骤,关注实现这个功能的步骤。第一步做什么,第二步做什么……另外,面向过程还注重实现功能的因果关系。因为A都是因为B所以C都是因为C所以D...面向过程中没有对象的概念。只是实现这个功能的步骤和前因后果。面向过程的缺点是什么?(耦合度高,可扩展性差。)面向过程主要是每个步骤和每个步骤之间的因果关系,其中步骤A与步骤B有因果关系,A和B组合成一个子模块,和子模块和子模块之间也相互连接。因为因果关系是组合在一起的,如果任何一个因果关系出现问题(错误),此时整个系统的运行都会出现问题。(代码与代码耦合度太高,扩容力太差。)螺栓和螺母拧在一起:耦合度高?由于可以拧下螺栓和螺母,因此耦合度较低。(它们之间有一个接口。)螺栓和螺母拧在一起后,用焊条焊接在一起。耦合度高吗?这种耦合度很高。耦合度就是粘附度。往往耦合度高的膨胀力差。高耦合导致传播力差。(集成显卡:电脑显卡不是独立的,是集成在主板上的)耦合度低导致扩展性强。(灯泡和插座的关系,螺栓和螺母的关系)用面向过程的方式开发计算机会是什么感觉?计算机将没有任何部件,全部融合在一起。您的计算机是一个没有任何部件的坚固部件。一台机器。如果一体机的任何“部分”发生故障,则整台计算机将无法使用,必须扔掉。(没有对象的概念。)以面向对象的方式开发计算机会是什么样子?内存条是一个物体主板是一个物体CPU是一个物体硬盘是一个物体然后这些物体组装在一起就形成了一台电脑。假设是CPU坏了,我们可以把CPU拆下来换上新的。面向过程的优点是什么?(快速开发)对于小项目(功能),采用面向过程的方式进行开发,效率更高。前期无需抽取物件和搭建模型,直接以流程化的方式开始工作。一上来就直接写代码,写因果关系。从而实现功能。什么是面向对象开发?用面向对象的方式开发更符合人的思维方式。(面向对象成为主流的原因)人类以“对象”的形式认识世界。所以面向对象更容易让我们接受。面向对象就是把现实世界划分成不同的单元,然后把每个单元实现为一个对象,然后驱动一个环境,让各个对象相互协作,形成一个系统。对象“张三”对象“香烟”对象“打火机”对象“吸烟场所”然后将以上4个对象组合在一起模拟一个人吸烟的场景。“张三”对象可以换成“李四”,“香烟”的牌子也可以换。“打火机”也可以更换。其中,“吸烟处”也可以更换。采用面向对象的方式开发:耦合度低,扩展性强。找到一个合适的案例。解释一下面向对象和面向过程的区别?蛋炒饭:鸡蛋和米饭完全混合在一起。没有独立对象的概念。假设客户提出一个新的需求:我只想吃鸡蛋炒饭里的米饭,怎么办?客户提出要求,软件开发商必须满足这个要求,于是开始扩容。这个软件的扩展是一场噩梦。(难以扩展,耦合度太高。)盖饭:老板,来了:鱼香肉丝盖饭鱼香肉丝是一道菜,算是一个独立的对象。大米可以看作是一个独立的对象。两个物体准备好后,只要有一个动作叫:“覆盖”,两个物体就会组合在一起。假设客户提出一个新的需求:不想吃鱼香肉丝饭,想吃番茄鸡蛋饭。这个扩展很简单。直接把“鱼香肉丝”对象换成“番茄蛋”对象。现在听听,完全理解面向对象需要三四年时间。面向过程主要关注:实施步骤以及整个过程。面向对象的主要重点是:对象A,对象B,对象C,然后是对象ABC组合,或者CBA组合……2.我们在整个系统中使用面向对象方法的时候,涉及到三个术语:OOA:Object-OrientedAnalysisOOD:Object-OrientedDesignOOP:Object-OrientedProgramming整个软件开发过程都是用OO贯穿的。实现一个软件的过程:分析(A)-->设计(D)-->编程(P)在软件公司,同事之间经常聊天,有时会突然说出一个英文单词。这种情况很常见。所以有些术语还是要知道的,不然就会闹笑话。leaderleader/manager/teamleaderteamPMprojectmanager(supervisoroftheentireproject)ProjectManager3、面向对象包含三大特性封装继承多态任何面向对象编程语言都包含这三大特性例如:python也有封装继承多态.Java也有封装、继承和多态。注意:java只是面向对象的编程语言之一。除了java,还有很多很多其他的编程语言也是面向对象的。先记住以上三个特征的名称,然后再一一学习。4.类和对象的概念面向对象中最重要的一个“字”就是:对象。什么是类?类在现实世界中实际上并不存在,它是一个抽象的概念。是一个模板。它是我们人脑“思考、总结、提炼”的结果。(类的概念主要是因为人脑不正常。)类本质上是现实世界中一些事物的共同特征。将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。一个星是一个类什么是对象?对象是实际的个体。(真实的个体)宋小宝是物体,姚明是物体,刘德华是物体……宋小宝、姚明、刘德华都属于“明星”的范畴。在java语言中,要想得到一个“对象”,首先要定义一个“类”,通过一个“类”的模板来创建一个“对象”。一个类就是一个模板:类中描述的是所有对象的“共同特征信息”。对象是通过类创建的个体。你需要自己能够解释这些术语:类:不存在的,人脑思考并总结出一个模板(这个模板描述了共同特征。)对象:实际存在的个体。实例:对象有另一个名称,称为实例。实例化:通过类模板创建对象的过程称为:实例化。抽象:多个对象具有共同特征,对共同特征进行思考、归纳和提炼的过程。Class--[Instantiation]-->Object(Instance)Object--[Abstract]-->Class类是描述公共特性的模板,那么公共特性包括哪些呢?潘长江对象:姓名:潘长江身高:165cm打篮球:非专业,自己打就行,没关系学习:考试80分姚明对象:姓名:姚明身高:240cm打篮球:NBA职业球员,打篮球很好学习:考试100分的共同特点是什么?姓名和身高属于名词(状态特征)打篮球和学习属于动词(动作特征)category=attribute+methodattributesource:statemethodsource:actionpublicclassstarclass{//attribute-->state,multiple见于名词名称属性;高度属性;//method-->action,多见于打篮球的动词method(){}learningmethod(){}}陈庚和何卫斌,他们有什么共同的特点吗?具有共同的特征,可以抽象出一个类模板。可以定义一个学生类(Student)publicclassStudent{//attribute//name//gender//height//methodpublic....sing(){}public....dance(){}public。...study(){}.....}5.思考:“java软件工程师”在开发中的作用是什么?我们为什么要做软件开发?更大的是为人民服务。解决现实生活中的问题。既然软件开发是为了解决现实世界中的问题,那么java软件首先要能够模拟现实世界。其实,软件就是一个虚拟世界。这个虚拟世界需要和现实世界一一对应,这就是模拟。6.类别定义6.1.如何定义类,语法格式是什么?[修饰符列表]class类名{//classbody=attribute+method//属性以“变量”的形式存在于代码中(描述状态)//方法描述动作/行为}注意:修饰符列表可以省略.6.2.为什么属性以变量的形式存在?假设我们要描述一个学生:该学生包括哪些属性:学号:110姓名:“张三”性别:'男'(true/false)地址:“深圳市宝安区”答案:因为属性对应“数据”,数据只能放在程序中的变量中。结论:属性实际上是变量。还记得变量的分类吗?变量按照出现的位置分为:方法体中声明的变量:局部变量。在方法体之外声明的变量:成员变量。(这里的成员变量是“属性”)6.3.请观察“学生对象1”和“学生对象2”的共同特征,然后用java语言表达/表达“学生类”。(这里只表示属性,不表示方法。)7、关于编译过程,先编译XueSheng.java,再编译XueShengTest.java。但是对于编译器来说,在编译XueShentest.java文件的时候,会自动找到XueSheng.class,如果没有,会自动编译XueSheng.java文件生成XueSheng.class文件。第一种方式:javacXueSheng.javajavavacXueShengTest.java第二种方式:javacXueShengTest.java第三种方式:javac*.java8.对象在语法层面是如何创建的?类名变量名=新类名();这样就完成了对象的创建。9.什么是实例变量?对象也称为实例。实例变量实际上就是:对象级变量。publicclassstarclass{doubleheight;}所有星形对象都具有高度属性,但每个对象都有“自己的高度值”。假设创建了10个星形对象,则height变量应该有10个副本。所以这样的变量被称为对象级变量。是实例变量。访问实例变量时,是否必须先创建对象?10.对象和引用的区别对象是通过new创建的,存放在堆内存中。引用为:任意变量,变量中存放的内存地址指向堆内存中的对象。
