java类和对象,java中return的用法
一、java中类和对象,到底该如何理解
谢谢邀请!
我从事软件开发有十多年时间,这期间也大量使用了java语言进行科研和教学工作。另外我在头条上也撰写了一个java系列的文章,目前java线程篇刚刚更新结束,大家如果对java感兴趣可以关注我并查看我的文章。所以这个问题一定要回答一下。
java是面向对象语言,面向对象语言的特征总结一下无非就是4大概念、3大特征、1个过程。先说这4大概念:
类(class):java中以类来组织代码,所有的功能都封装在类中,可以说写java程序就是写类。那么怎么来理解这个类呢?简单的说类就是同一类事务概念层次上的抽象。好像这个解释也不太好理解,那么你第一步可以这么认为:java中的类就是“图纸”,有了这个“图纸”,我们就知道它想做什么事儿,能做什么事。但是“图纸”本身做不了事,这个要搞清楚。
对象(Object):对象简单的说就是存储在内存中,能执行具体功能的实体。借用埃克尔在《Thinkinginjava》一书的一句话:alleverythingisaobject,也就是万物皆对象。如果我们把类看作是“图纸”的话,那对象就是根据这个“图纸”创作出来的“实物”,所以对象是能够具体执行功能的实实在在的实体。
方法(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如何得知一个对象是在那个类里面创建的
那你调用a1的时候总要涉及创建他的类吧。
三、在java中类的初始化和对象的实例化有哪些区别,是先执行哪一步
Java规范中说明了一个对象在可以被使用之前必须要被正确地初始化,所以是先执行类的初始化,然后才会又对象的实例化。如果有什么区别的话,那就是实例化要在初始化之后。
类的初始化
当Java虚拟机开始工作的时候,会首先对需要的类进行加载,这个加载的过程中又类加载器负责,加载过程分为五个阶段,加载、验证、准备、解析和初始化,
对象的实例化
当类被初始化之后,我们才能获取对象的实例,比如说执行到newPerson()这一步的时候,先为成员变量赋默认的初始值,然后再按照成员变量以及非静态块的出现顺序进行初始化,等所有成员变量初始化完成以及非静态块执行完之后调用构造方法完成对象的创建,这个过程就是对象的实例化。
希望我的回答对你有所帮助