大数据培训之旅——Java-3(类与对象,面向对象)

    这篇文章开始之前,我们先介绍个工具,Eclipse,这东西超级秀,只要有插件,就能使用大部分主流语言编程,当然这是免费的,我用的是MyEclipse,他在Eclipse上做了优化还是蛮好用的,给大家个网址,自己领悟吧,http://ck.crskey.com/post/36.html。废话不多说,我们来看看今天的内容。当然我打过一个java基础的所有源码示例,只不过是都在一起,我在想是一点点给出来,还是最后一起给,经过我几秒钟的思考,我还是决定最最后一起传到网盘里,大家可以不根据,图文讲解,自己根据注释看看,能不能看懂。

    先来看看如何使用myeclipse。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    既然会使用了,那么继续继续。

    我们都知道java是纯面向对象的程序语言,那么什么叫做面向对象,在了解面向对象之前,我们先说说面向过程,面向过程说白了就是一步一步走,少了那一步都不行,而面向过程对象就是,所有的和对象有关的步骤都准备好,我们需要哪一步就用哪一步,随时更换,曾经在网上看到一个有趣的比喻,把面向过程比作炒饭,面向对象比作盖饭,毋庸置疑的是炒饭更加入味,但是遇到不喜欢吃的只能倒掉,而盖饭虽然不是很入味,但是遇到不喜欢吃的菜,我们可以只拿走菜,然后在加上我们喜欢的菜。两者哪一个好,众说纷纭,或许都没有错,只不过是所处理的问题不同。

    估计大家看到这还是云里雾里的,不急我们慢慢研究,就知道了,首先来说说类和对象:类是对某一事物的描述,比如,蔬菜,水果,动物。而对象则是实际存在的个体,比如蔬菜中的白菜,萝卜,水果中的苹果,鸭梨,动物中的狮子,老虎。

    我们举个例子,比如生产汽车,每一种汽车都有设计图纸,我们可以说这个图纸是类,而依照图纸生产出来的汽车可以说是对象,而且不是同一个实体,也就是说通过类可以产生对象,而且不是同样的,放到计算机里就是,一个类可以产生多个对象,每个对象在内存中分配的地址不一样,每个对象都有自己独立的内存地址。还记得我们的第一个代码hello word么,他的第一行public class aa,这就是声明了一个类,类里面包含的是成员变量,和成员方法。下面我们来看看类是如何定义的。

    [类的修饰字] class 类名称 [extends 父类名称] [implements 接口名称列表]

    {

        成员变量定义以及初始化;

        成员方法定义以及方法体;

    }

    这里的extends以及implements后面会有专门的介绍,这里就先不说了,我们暂时用不到。类的定义说完了,下面说说成员变量的定义,他的格式为。

    [变量修饰符] 变量数据类型 变量名1,变量名2[=变量初值];

    成员方法是如何定义的呢?

    [方法修饰字] 返回类型 方法名称(参数1,参数2,……) [throws Exception]

    {

        语句体;//方法体;方法的内容

    }

    写了这么多格式,相信大家已经蒙掉了,还是代码来的实在,我们来看看代码吧,主要是演示成员变量的创建,成员方法的创建,由类创建对象,对象如何使用成员变量成员方法,当然以后我们使用MyEclipse10来编写代码。
 

——————————————————————————————————————————————————————

    基本的操作我们已经了解了,下面看看修饰符,也就是我们刚才在代码中class前面的东西。类的修饰符有四种下面来分别说说:

public(公共):允许其他类访问本类,一个源文件只能由一个public修饰的类,而且与文件名同名。

default(默认缺省):什么都不加的时候默认是default,可以被当前包也就是我们新建package中的其他类访问。

abstract(抽象):这东西是没有实例的抽象类,后面介绍抽象类的时候会说。

final(最终):这种类不能被扩展,不能被继承,所以相当安全,常常用于创建固定功能的类。

    除了类有修饰符,成员变量和成员方法也有修饰符,我们用来控制访问权限的有四种,这四种用来限制成员变量和成员方法的被访问的 范围,看看下面的图就知道了。

——————————————————————————————————————————————————————

    对于成员变量和成员方法来说,还有一个之前说过的修饰符final,添加在变量前面,这时就变成了常量,同样添加在成员方法前面就变成了不能被重新定义的方法。还有一个关键字static,用这个修饰的成员变量和成员方法,可以直接用类名或对象名作为前缀直接调用,当然很方便但是在静态方法中,只能使用静态变量或者自己的局部变量。对于成员方法来说还有abstract和synchronized可以作为修饰词,前者修饰的方法,只有接口没有语句,需要在子类中重新定义,后者则是用于多线程编程。吧啦吧啦说这么多,估计已经蒙掉了,那我们就用代码来演示下现在能够用到的修饰符。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    大概的样子就是这样了,剩下的大家可以自己试试。之后我们要说一个java的垃圾清理机制,这东西用来把我们不用的内存中的对象从内存中给释放出来,这样我们就不会一直占用内存了,说到这就让我想起了很早之前的整人的程序,因为c语言没有完善的内存清理,所以可以用c语言不停地循环申请内存空间,这样慢慢的内存空间就被占满了,于是电脑就卡住了。说的有点多,我们来看看具体是怎么搞的。

——————————————————————————————————————————————————————

    我们来看看下面一个需要注意的地方。

——————————————————————————————————————————————————————

    这个完事之后看看对象需要注意到地方。

——————————————————————————————————————————————————————

    成员变量和成员方法的基本使用都介绍完了,下面说说成员方法的传参,大体分类的话有两中参数,分别为基本类型以及引用类型,我们看看例子

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    当然因为我们传进去的cc是对象,所以c接收到的也是对象,那么对象是不是可以调用方法以及变量呢?大家可以试试。而且我们传参的时候可以传进去多个参数,比如我们写个加法计算器。

——————————————————————————————————————————————————————

    我们改一下计算器,再来看看。

——————————————————————————————————————————————————————

    成员方法的基本使用我们了解了,之后来了解下,面向对象的核心,封装,继承,多态。

    继承很好理解,就像继承遗产一样,子承父业,子偿父债,我们需要加入extends作为关键字,来直接来看看代码。

——————————————————————————————————————————————————————

    对于继承来说,java只支持单继承,不支持多重继承,但是可以一层一层的继承,就像我们只有一个父亲一个祖父一样,但是可以有多个类继承父类,也就是说我们可以有兄弟姐妹,也可以有多个叔叔,姑姑一样,于是父类可以接收子类的对象。了解这个之后,我们来看一个例子。

——————————————————————————————————————————————————————

    super也说完了,现在我们了解一个东西,构造方法,这东西默认是存在于类中的,当我们new对象的时候会自动调用,为我们创建一个对象,默认的构造方法是没有返回值类型的,当然我们重写的也没有,来看一个构造方法的例子。

——————————————————————————————————————————————————————

    既然构造方法也属于成员方法,那么子类能否继承呢,当子类继承父类的时候,new新的对象,会默认执行父类的构造方法,区创建对象,如果父类有参数的构造方法被重写,子类就需要重写构造方法,当然子类可以扩展自己的成员。来看看是如何操作的

——————————————————————————————————————————————————————

    在所有类中有个特殊的类Object类,所有的类全部是继承于Object类,是最顶层的类,我们写的class a{}就相当于class a extends Object{},重写说完之后我们来说说重载,重载是在同一个类中出现的情况,他们的方法名相同,参数列表却不相同,这种情况就是重载,看看例子。

——————————————————————————————————————————————————————

    在所有的重载中,最常见的就是构造函数的重载,和正常的重载一样,只是参数列表不同

——————————————————————————————————————————————————————

    重载和重写都说完了,我们也知道super的用法了,我们来看看另一个this的用法。

——————————————————————————————————————————————————————

    这就是this的作用,说白了就是使用当前类里面的东西,当然也有可能有其他作用,不过我只知道这一个,下面来说说静态static,我们之前就演示过staitc修饰的方法以及变量可以直接使用类名作为前缀调用,我们来说说需要注意的地方,static修饰的变量被所有的对象共享,当然要想调用的话自己也需要是static修饰的,而且静态的变量在内存中只有一份拷贝,而且需要注意的是任何方法体内的变量不可以修饰成静态比如a(){static int i = 0;}这样就是错误的。变量说完,说说静态方法,和静态变量类似,静态方法也可以直接使用类名作为前缀调用,而且静态方法中不能使用this以及super。不知道大家有没有观察过main主方法也是static修饰的,所以我们的jvm虚拟机可以不创建对象就直接去调用主方法,而且我们无法直接访问main中的非静态成员,所以必须创建一个实例,也就是之前说的只有静态能调用静态,其他就需要创建对象了。static还有一个超级厉害的地方,就是静态代码块,用static{},这就是静态代码块,括号内的代码就是静态代码块内的代码,这个代码会在最最最一开始执行,比如下面这个例子。

——————————————————————————————————————————————————————

    下面继续,基础的我们已经都了解了,下面说说另一种类,其实也不算另一种,只是位置不一样,我们来一个内部类,他被声明在另一个类中。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    基本的类都说完了,下面来说说抽象类,抽象类是在类中只有方法的定义,而没有方法实现,这样的方法被称为抽象方法,而含有抽象方法的类叫抽象类,用Abstract修饰的类也是抽象类。

——————————————————————————————————————————————————————

    抽象类搞定之后就是接口了,接口是一种特出的抽象类,包含常量和方法的定义,没有变量以及方法的实现,我们用interface声明。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    接口就是这么使用的,我们来看看有什么需要注意的,接口除了抽象类中需要注意的,我们还需要注意接口可以继承多个接口。来看看下一个知识:异常,异常和我们的语法错误不一样,而是非致命错误,比如打开不存在的文件,网络连接中断,操作数越界,装在不存在的类,这些不足以毁掉程序,但是会组织程序的正常运行,为了让程序遇到非致命错误能够继续运行,我们就需要将异常事件进行处理,java中异常本身就是个对象,这有可能是程序产生的,也有可能是jvm虚拟机产生,对于异常我们有两种处理方式,一种是捕获异常,一种是向上抛出,抛到调用的地方,然后在向上抛,直到被jvm虚拟机处理。

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    异常也不捕捉了,下面看看包,包是什么,包可以看成一个文件夹,我们把一类的东西都放到包里

——————————————————————————————————————————————————————

    具体每个包有什么功能我们可以去查java的api文档,我们只要记住一些常用的就好。下面看看如何把我们自己写的程序打成包

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

——————————————————————————————————————————————————————

    当然我们打成了可执行的jar包,那么我们怎么运行呢?

——————————————————————————————————————————————————————

    类和面向对象就告一段落了,下一篇文件会介绍更神奇的东西,数组和api。

   

猜你喜欢

转载自blog.csdn.net/g982508295a/article/details/81127862
今日推荐