java是面向对象的编程语言,对象是Java中最基本的概念,但是很多初学者对于对象的概念基本上很模糊。所以如果你不知道什么是对象,怎么掌握面向对象的编程语言。本文会对于Java面向对象概念以及类的概念、类的定义以及类的成员变量进行一个说明。
面向对象概念
对象:在面向对象程序设计中,我们将问题空间中的元素以及他们在方案空间中的的表示物称作对象(object)。例如生活中的对象:桌子、手机、电脑等,可以说所有的物体都是对象。每一个对象都有自己的行为和特征,java将对象的特征描述为属性,将行为描述为功能,并将属性和功能进行封装。把一个具体的物体抽象出来,用程序语言对它进行操作等(在程序语言中,用变量存储特征,用函数来定义行为。)。当我们需要完成某些功能的时候,就指挥对象去完成,这样子操作更加简单方便。而对象之间进行通信是通过方法对对象内部状态的操作。这种通信方法隐藏了对象内部的状态,在面向对象的基本原则中要求所有通信都通过对象的方法来实现,这种原则通常称为数据封装。
简单来说:面向对象是一种思想。面向对象是面向过程而言的,且基于面向过程。面向对象将功能和数据封装进对象,强调了对象所具备的功能。在实际开发中,先明确好对象,以对象为核心,在具体实现功能。面向对象的三个特征:封装性、继承性、多态性。
就例如生活中的许多对象,因为他们有着类似的特性和行为,这样子我们就可以把他们分到一个类中。下面我们说说类:
类与对象之间的联系
类是什么
类就是对现实事物的描述,而对象就是这类事物。类中封装了该类事物的特性和行为。Java中就是利用了事物特征,讲客观事物抽象为类,通过类产生一个个具体的对象。所以现有类后有对象,类就像对象的描述以及模板,对象就是其中描述的具体实例。例如:"电子产品"就像一个类,当你听到电子产品的时候就会想到手机、电脑、mp3等,因为这些事物中都有相同的特性。
类的定义
类的定义就是描述事物,定义事物的属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)。类的定义包含两个部分,类的声明和类体,类体中封装了该类事物的属性(成员变量)和成员方法(行为)。
对象的创建
使用new关键字创建一个对象时候,该对象就在java在堆内存中存在了。类类型变量指向对象。堆内存中的成员变量都有一个默认初始化值。对象可以使用对象名、成员变量和成员方法来指挥调用。
上面说到用new创建一个对象,那么new是如何创建对象的?
Iph njy = new Iph(, , ,);
1.因为创建的时候用到Iph.class,所以会先找到Iph.class文件并加载到内存中。
2.执行该类中的static代码块,如果有的话,给Iph.class类进行初始化。
3.在堆内存中开辟空间并分配内存地址。
4.在堆内存中建立对象的特有属性并进行默认初始化。
5.对属性进行初始化。
6.对对象进行构造代码块初始化。
7.对对象进行对应的构造函数初始化。
8.将内存地址付给栈内存中所对应的变量。
例子:
要注意的是:
一个java源文件中如果定义了多个类,那么这些类中最多只能有一个类是public的。换句话说,定义的多个类可以都不是public的。因为虚拟机开始是要找main方法这个入口的。,所以被定为public的这个类一定是main方法的类,而且这个类名要与文件名所一致。
匿名对象
含义:创建的对象没有名字,直接使用new来直接使用的对象,没有类对它的引用指向它。例如:
new Iph("诺基亚" , "智能" , 500.0).call();
如果对象的方法只是调用一次的话可以使用匿名对象,这样会比较方便。但是要多次调用的话就必须给它起个名字。方法可以将匿名对象作为实际参数进行传递。
匿名对象在被使用一次或者说被用来调用一个成员方法之后,垃圾回收机制会将这个匿名对象进行垃圾回收。而非匿名对象不同的是它在这个对象不再被使用或随着主函数的结束才会被回收。
成员和局部变量
成员变量:随着对象的初始化而初始化,如果没有指定初始化值,那么在初始化时就赋上默认值,所以成员变量可以不赋值就直接参与运算。
成员变量只能在类中定义并作用于整个类中,是该类事物的特征属性。内存的位置是在堆内存中,因为对象的存在,才在内存中存在。
局部变量:随着方法的加载而被加载进栈内存中,必须先赋值才能参与运算,因为它没有初始化值。定义在成员方法或者语句块中的变量。
作用范围:是成员方法或者语句块中。
内存的位置:是在栈内存中,随着函数的结束而消亡。
总结:面向对象的概念对于Java是一个思想,每个学习编程语言的都要知道面对对象的概念以及面向对象和面向过程的分别。对于匿名对象,学习语言的前期建议少点使用,平时编程的格式要严格要求自己,这样以后编程上就会有良好的习惯。避免以后开发软件的时候由于习惯不好导致错误。