一、类和对象
、
1.面向对象概述:在程序开发初期,人们使用结构化开发语言。随着软件的规模越来越庞大,结构化语言的弊端也逐渐暴露出来,开发周期越来越长,产品的质量也不尽如人意。这时人们开始将另一种思想引入程序中,即面向对象的开发思想。面向对象思想是人类最自然的一种思考方式,它将所有预处理的问题抽象为对象,想通过了解这些对象具有那些相应的属性以及展示这些对象的行为,以解决这些对象面临的一些实际问题。
2.对象: 现实世界中,随处可见的一种事物就是对象。对象是事物存在的实体。通常都会将对象划分为两部分,即静态部分和动态部分,静态部分就是不能动,这个部分被称为属性,任何对象都会具有其自身的属性。1识别对象的属性 2.识别对象具有的行为 3.描述对象与类之间的关系
3.类:类是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称,对象就是符合某个类的定义所产生出来的实例。更为恰当的描述是,类是世间事物的抽象称呼,而对象则是这个事物对应的实体。类是封装对象的属性和行为的载体,具有相同属性和行为的一类实体称为类。在Java语言中,类对象的行为是以非法的形式定义的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和方法。
4.封装:面向对象程序设计具有以下特点:封装性、继承性和多态性。封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指敲击键盘就可以以实现一些功能,无需知道计算机内部是如何工作的。即使知道计算机的工作原理,但在使用计算机时并不依赖计算机的工作原理等细节。采用封装的思想保证了类的内部数据结构的完整性,使用类的用户不能轻易地直接操作类对数据结构,只能执行类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性。
5.继承:类与类之间同样具有关系,这种关系被称为关联。关联主要描述两个类之间的一般二元关系。例如,一个百货公司类与销售员类就是一个关联,学生类与教师类也是一个关联。两个类之间的关系有很多种,继承是关联中的一种。继承性主要利用特定对象之间的共有属性。在Java语言中,将类似于平行四边形类的类称为子类,将类似于四边形类的类称为父类或超类。值得注意的是,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也就是说子类的实例都是父类的实例,都不能说父类的实例都是子类的实例。继承关系也可以使用树形关系来表示,父类于子类存在一种层次关系。一个类处于继承体系中,它既可以是其他雷达父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法,如三角形既是图形的子类也是等边三角形的父类。
6.多态:继承中的父类与子类,其实将父类对象应用于子类的特征就是多态。依然以图形类来说明多态,每个图形都有绘制自己的能力,这个能力可以看作是该类具有的行为,如果将子类的对象统一看作是父类的实例对象,这样当绘制图形时,简单地调用父类也就是图形类绘制图形方法即可绘制如何图像,这就是多态最基本的思想。多态性允许以统一的风格编写风格,以处理种类繁多的已存在的类以及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,可以实例化的子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样就降低了维护的难度,节省了时间。提到多态,就不得不提抽象和接口,因为多态的实现并不依赖与具体类,而是依赖于抽象和接口。在多态的机制中,比抽象类更方便的方式是将抽象类定义为接口。由抽象方法组成的集合就是接口。
二、类:是封装对象的属性和行为的载体,在Java v语言中对象的属性以成员变量的形式存在,对象的方法以成员方法存在。
1.成员变量:对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量作用范围。
2.一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值,可以在方法体中使用return关键字,使用这个关键字后,方法的执行将被终止。成员变量返回值是可以计算结果,也可以是其他想要的数值和对象,返回值类型要与方法返回的值类型一致。
3.权限修饰符:java中的权限修饰符主要包括private, public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的。
4.局部变量:局部变量是在方法被执行时创建,在方法执行结束时被销毁,局部变量在使用时必须进行赋值操作或者被初始化,否则会出现编译错误。
5.局部变量的有效范围可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。在互不嵌套区域可以定义相同名称和类型的局部变量。
6.this关键字:this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编译的类。this关键字只能在本类中使用。
7.类的构造方法:在类中,除成员方法外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。构造方法的特点:1.构造方法没有返回值2.构造方法的名称要与本类的名称相同。
8.静态变量和静态方法:在介绍静态变量和静态方法之前,static关键字因为由static修饰的变量和方法被称为静态变量和静态方法。被声称为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。静态变量和静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等。尽管使用这种方式调用静态成员比较方便,但静态成员同样遵循着private,public,protected修饰符的约束。使用static关键字要注意:1.在静态方法中不可以使用this关键字。2.在静态方法中不可以直接调用非静态方法。3.局部变量不可以使用static关键字。4.主方法必须使用static声明。5.只有内部类可以使用static关键字声明。
9.主方法是类的入口点,它定义了程序从何处开始。主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。主方法的定义中可以看到其具有以下特点:1.主方法是静态的,要直接在主方法中调用其它方法,则该方法必须要是静态的。2.主方法没有返回值。3.主方法的形参为数组。其中args[0]-args[n]分别代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数。
例题:6.1-6.3
三、对象:Java是一门面向对象的程序设计语言,对象是由类实例化而来的,所有问题都通过对象来处理。对象可以通过操作类的属性和方法来解决相应的问题,所以了解对象的产生、操作和消亡是十分必要的。
1.对象的创建:对象可以认为是在一类事物中抽象出某一个特例,可以通过这个特例来处理这类事物出现的问题。在Java语言中,通过new操作符来创建对象。前文在讲解构造方法时,没实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程。准确的说,可以在Java语言中使用new操作符调用构造方法创建对象。
例题6.7:
2. 访问对象的属性和行为:用户使用new操作符创建一个对象后,可以使用"对象.类成员”来获取对象的属性和行为。前文已经提到过,对象的属性和行为在类中是通过类的成员变量和成员方法来表示的,所以当对象获取类成员时,也相应地获取对象的属性和行为。
3.对象的引用:在Java语言中,尽管一切都可以看作对象,但真正的操作标识符实质上是一个引用,那么引用在Java中例如:一个people类的引用可以使用:people tom;
通常一个引用不一定需要有一个对象相关联。引用与对象相关联:people tom=new people();
4.对象的销毁:每个对象都有生命周期,当对像的生命周期结束时,分配给该对象的内存地址需要被回收。在其他语言中,需要用户手动回收废弃的对象。Java拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器会自动回收无用却占用内存的资源。需需要明确的是,垃圾回收或finalize()方法并不保证一定会发生。如果Java虚拟机内存损耗待尽,它将不会执行垃圾回收处理。