`
liuwei1981
  • 浏览: 771864 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161204
社区版块
存档分类
最新评论

10.简单说说类和对象

 
阅读更多

前面说了很多遍Java是面向对象的编程语言,在我们的第一个Java编程范例中,也提到了class这个关键字,涉及到了类的概念。那么在开始正式进行Java编程语法之前,先简单说说什么是类,什么是对象,这样在进行面向对象编程中,才能有比较完备的面向对象的编程思想。

 

根据以前培训的印象来说,如果以前有编程的学习过程,但是学习的是其他的非面向对象编程语言,或者即使学习的是面向对象编程语言,但是没有形成面向对象编程思想,这里转换成面向对象编程的思想是很困难的,有时候甚至还不如直接没有任何具体编程语言基础来得快。

 

首先说什么是对象。没有什么神秘的,一句话,万物皆对象。只要你想得到,无论是实体,还是一些虚拟的事物,都可以称之为对象。换言之,Java作为面向对象的编程语言,意味着可以把任何形式的内容转化为编程语言进行软件开发。

 

我们每天的生活、工作,无时无刻不在和“对象”打交道----衣服、食物、房子、汽车等。我们仔细想想,就会发现,当我们处理这些对象时,我们不会将这些对象的属性(对象所具有的特点)和操作分开。如我们进出“房间”时,我们不会将“房门”这个属性和“开门”这个操作分开,它们是联系在一起的。那么,面向对象编程思想力图使得程序和现实世界中的具体实体完全一致。这样,可以让程序员乃至非专业人员更好的理解程序。所以Java语言还是很好阅读的。

 

但是既然万物皆对象,我们编程,用编程语言来描述对象,不能为浩繁纷杂每一个对象进行相应描述,这就涉及到一个具体到抽象的过程了。其实我们的语言已经做到这一点了。我们平时说道的每一个名词,其实都是对现实世界中的一个个具体的“物体”(或称为“实体(Entity)”)相应的特征和行为抽象出来,并且将各种具有相同特征的“物体”分为一个个的“类(class)”,就是我们为每一类事物起的名字。比如:汽车、食物、狗、人这些词等等。

 

然后就是一个从抽象到具体的过程了。那我们分析抽象出的名词概念(就是类了)来描述一个个具体的对象,或者说类就是一个规范、蓝本,来对一类对象进行分析,归类和识别。

 

前面说的从具体到抽象的过程,很像给这些纷杂的对象进行归类分组,划出一个个种类。没错,其实,类这个概念就是分类的意思。

 

总结一下,“类”(Class)相对于现实世界中的“实体种类”(Entity Category),如汽车、人类、房子等,它是现实生活中某类实体的抽象。而对象(Object),或者实体(Instance),指的是这些种类中的一个个具体存在,如Benz-600,Santana-2000等具体的汽车,或者张三、李四等具体的个人。

 

类和对象是面向对象编程思想中的核心和基础。类是作为对象的蓝图而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。


我们用一个具体的例子来进一步说明“类”和“对象”之间的联系与区别。以汽车为例,只要是汽车,都应该有以下一些特性:轮子、引擎、方向盘、刹车等等组件,可以通过这些组件来操作汽车,改变汽车的状态,如加速、转向、减速等,这些都是汽车的共性。具体到某辆汽车,它可能有80cm的轮子、40cm的方向盘、A6引擎,它是一个确定的实例。使用“汽车类”这个蓝图,就可以生产出一辆辆的汽车“实例”。这和盖房子一样,根据一张图纸,可以盖出任意数量的房子,而这些房子都有一样的特征。

 

 

 

 

分享到:
评论

相关推荐

    JVM面试题分享给需要的同学.zip

    7.简单说说你了解的类加载器,可以打破双亲委派么,怎么打破 8.说说你知道的几种主要的JVM参数 9.怎么打出线程栈信息 10.强引用、软引用、弱引用、虚引用的区别? 1)强引用 软引用 弱引用 虚引用 11.堆栈的区别是...

    转载面向对象的理解

    对象将数据和行为封装在一起,对外提供简单的接口。例如,在维修冰箱的例子中,面向对象的修理工只需要知道如何调用冰箱的维修方法,而无需关心具体的实现细节。 - **多态**:多态允许我们使用一个接口表示多种不同...

    A java swing game .简易的中秋博饼游戏(Swing+Spring+MyBatis).zip

    在本项目中,Spring可能被用来实现依赖注入(DI)和面向切面编程(AOP),帮助管理游戏的业务逻辑和对象之间的关系。例如,通过Spring的Bean管理,可以方便地控制游戏状态,处理玩家信息和游戏规则。 再来说说...

    简单说说angular.json文件的使用

    本文将深入探讨`angular.json`文件的结构和主要配置项。 首先,`$schema`属性是一个JSON Schema的URL,它定义了`angular.json`文件的结构和约束。当使用支持JSON Schema的IDE或编辑器时,这个属性有助于提供代码...

    易语言源码易语言QQ空间说说转发源码.rar

    易语言是一种基于中文编程的计算机程序设计语言,其目标是使编程变得更加简单、直观,尤其适合初学者。在这个“易语言源码易语言QQ空间说说转发源码.rar”压缩包中,包含的是一个用易语言编写的程序,用于转发QQ空间...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题10.ArrayList 和LinkedList的区别 Java面试题11.HashMap和HashTable的区别 Java面试题12.实现一个拷贝文件的工具类要使用字节流还是字符串 Java面试题13.线程的的实现方式?怎么启动线程?怎么区分线程? ...

    Excel列表转化成java对象

    "Excel列表转化成java对象"的主题就聚焦于这个过程,它涉及到Java对Excel和CSV文件的解析以及数据映射到Java对象的技术。 首先,我们要了解如何在Java中处理Excel文件。Java提供了多种库来处理Excel,如Apache POI...

    超级有影响力霸气的Java面试题大全文档

     final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的...

    基于JAVA的简单Socket通信.pdf

    在本文中,假设服务器A的IP地址为192.168.10.201,它指定套接字端口号为9123。客户端向服务器A发送连接请求时,使用Socket类创建一个套接字对象,并指定服务器的IP地址和端口号。 通过JAVA编程,可以实现Socket通信...

    Java面试八股文十万字总结.docx

    - **类加载与卸载**:类加载包括加载、验证、准备、解析和初始化五个阶段;类卸载通常发生在系统退出时或系统资源紧张时。 - **JVM的内存模型**:包括堆、栈、方法区、程序计数器、本地方法栈等。 - **堆和栈的区别*...

    软件开发技术面试常见题目

    7. 如果类 a 继承类 b,实现接口 c,而类 b 和接口 c 中定义了同名变量,请问会出现什么问题? 8. 请说一下 Java 中为什么要引入内部类?还有匿名内部类? 9. 请说一下 final,finally 和 finalize 的区别。 10. 请...

    Java面试宝典2013_PDF版.pdf

    Integer是int的包装类,可以存储null值,常用于泛型和其他需要对象类型的地方。 15. Math.round(11.5)等于多少? Math.round(-11.5)等于多少? Math.round(11.5)等于12,Math.round(-11.5)等于-11,因为round方法...

    spring笔记.docx

    Spring框架是Java开发...总之,Spring框架提供了丰富的功能和灵活性,从简单的Bean管理到复杂的AOP和事务处理,都为开发者带来了极大的便利。通过学习和理解这些基本概念,小白也能逐步成长为Spring框架的熟练使用者。

    java面试题

    72.10. Struts的validate框架是如何验证的? 74 72.11. dispatchAction是用什么技术实现的? 74 72.12. struts2.0的mvc模式?与struts1.0的区别? 74 72.13. struts1.2和struts2.0的区别?如何控制两种框架中的单例...

    Java就业面试题275道.doc

    面试中,Java的基础知识、语法特性、类和对象、内存管理、异常处理、多线程、集合框架等内容都是考察的重点。以下将对部分Java就业面试题进行详细解析: 1. **JAVA的基本数据类型有哪些?String是不是基本数据类型...

    易语言QQ空间说说转发

    3. **初始化**:在程序开始运行时,初始化过程是设置必要的变量、对象和环境,为后续的操作做好准备。例如,可能需要初始化网络连接、设置登录凭据等。 4. **login**:登录是程序的重要部分,它通常涉及发送登录...

    Java面试宝典2012版.pdf

    说说&和&&的区别 `&`和`&&`都是逻辑运算符,但它们的行为有所不同。`&`表示逻辑与,并且总是对两边的操作数进行求值,而`&&`也是逻辑与,但它具有短路效果,即当左边的操作数为`false`时,右边的操作数将不会被求...

Global site tag (gtag.js) - Google Analytics