大家知道java面向对象编程,什么是对象,你可以将对象概念比喻成生活中的人,类相当于一个模子,对象依据模子生成人,这种理解不知道有没有帮助到你
java中类和对象,到底该如何理解?
我从事软件开发有十多年时间,这期间也大量使用了java语言进行科研和教学工作。另外我在上也撰写了一个java系列的文章,目前java线程篇刚刚更新结束,大家如果对java感兴趣可以关注我并查看我的文章。
java是面向对象语言,面向对象语言的特征总结一下无非就是4大概念、3大特征、1个过程。先说这4大概念:
- 类(class):java中以类来组织代码,所有的功能都封装在类中,可以说写java程序就是写类。那么怎么来理解这个类呢?简单的说类就是同一类事务概念层次上的抽象。好像这个解释也不太好理解,那么你第一步可以这么认为:java中的类就是“图纸”,有了这个“图纸”,我们就知道它想做什么事儿,能做什么事。但是“图纸”本身做不了事,这个要搞清楚。
- 对象(Object):对象简单的说就是存储在内存中,能执行具体功能的实体。借用埃克尔在《Thinking in java》一书的一句话:all everything is a object,也就是万物皆对象。如果我们把类看作是“图纸”的话,那对象就是根据这个“图纸”创作出来的“实物”,所以对象是能够具体执行功能的实实在在的实体。
- 方法(method):方法是描述功能的基本单位,如果说写java程序就是写类的话,那么写类就是写方法。java与Python不同的一个地方就是java中没有函数的概念,java中只有方法的概念,Java中所有的功能都通过方法来呈现。所以方法在java中具有举足轻重的作用,由方法派生出来的面向对象概念也较多,比如:方法重写、方法重载、抽象方法、最终方法等。
- 属性(Attribute):属性的作用简单的说就是描述状态的,描述对象的状态。属性与方法分别作为描述对象的两个主要方面:属性描述状态、方法描述功能。也可以简单的说:对象是由属性和方法组成的。属性在Java中又分为成员属性和局部属性,通常描述状态指的是成员属性,局部属性的作用是为了完成某一功能而临时存在的,所以局部属性是定义在方法体内的,生命周期也仅仅局限在方法体内。和方法一样,属性也有变量、常量、静态/非静态来分别完成不同的状态描述。
下面我们看一下3大特征:
- 封装:封装是隐藏类内部的实现细节,用公共的方法操作其私有的属性。简单的说java中的封装分为三步来实现:(1)设置属性为私有。(2)定义设置器。(3)定义获取器。封装是java实体类必须做的事情,也是java程序员要掌握的基础内容。
- 继承:从一个已知类派生出新类的过程称为继承,java中只能单继承不能多继承(与Python不同)。继承的概念体现的主要设计思想是复用,为了弥补在多继承方面的不足,java采用了接口(interface)来完成多继承的相似功能。
- 多态:同一个对象在不同条件下表现的不同形式。简单的说java的多态就是3个定义、2个方法,3个定义分别是父类定义子类赋值、接口定义类赋值、抽象类定义实体类赋值,2个方法分别是:方法重写和方法重载。
最后看1个过程:这个过程称为面向对象编程过程,分为3步:(1)类的定义。(2)对象的创建。(3)方法的调用。
由于篇幅的问题,这里就不再展开说明了,如果要想进一步了解,可以去看看我在写的java系列文章。希望我的回答能帮助你理解java中的类和对象,再次感请!
如何比较java对象是同一个对象?
首先:同一个对象,指的是多个变量指向的对象是存储在同一块内存地址中,还是说多个对象他们属性字段值是一样的,但不在同一块内存空间中存储,这一点需要明确。
其次,基本类型不是对象,所以比较对象是否相同,是不需要考虑基本类型。
最后,如果题主所说的相同,指得是同一个内存地址下的值,那么使用==就可以了判断是否相同,而如果对象属性字段值相等就认定是同一对象的话,那需要重写hashcode和equals方法,然后再使用==即可。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。