文档库 最新最全的文档下载
当前位置:文档库 › 面向对象的基本思想

面向对象的基本思想

面向对象的基本思想
面向对象的基本思想

面向对象的基础思想

1 类与对象(重点)

1.1类与对象的基本关系

类与对象是整个面向对象概念之中的最为重要的组成部分。

类:类是对整个现实世界的一种合理的抽象,是一种共性的产物,在类之中主要有两个组成部分:属性(变量)、行为(方法);

对象:是一个具体的,可以使用的产物,是一种个性的表示。

实际上类中规定了一个对象的具体行为,而对象是一个类的具体表现。类只有通过对象才可以使用,所以在开发之中一定要先有类之后再定义对象。

但是一个类产生之后就好比汽车的设计图纸那样,本身并不能直接使用,必须按照图纸生产出具体的汽车之后才可以开,所以需要对象,而对象定义格式如下:

格式一:声明并实例化对象

格式二:分步完成

通过以上的格式可以发现,依然存在了关键字new,所以这一操作也一定表示要开辟堆内存空间,同时需要注意的是,当一个对象开辟空间之后可以按照如下的两个方式来操作类中的内容:

·操作类中的属性:对象.属性;

·操作类中的方法:对象.方法();

范例:声明并实例化对象

但是类本身属于引用数据类型,所以以上的程序依然要牵扯到内存的划分,同样使用两块内存:·堆内存:保存的是每一个对象所具备的属性;

·栈内存:保存的是一块堆内存的使用地址,可以简单理解为对象名称。

1.2浅深入引用传递

清楚了以上的内存关系之后,下面再来对另外一个类似的程序进行观察。如果说现在同时产生了两个

只要发现了关键字new,那么一定表示要开辟的是一块新的内存空间,每一块堆内存空间都有一个栈内存指向它。

范例:观察如下程序

发现现在一个per对象没有进行实例化的操作,这个时候程序编译没有任何的语法错误,但是程序执行的时候出现了以下的错误提示:

现在给出的是“NullPointerException”,表示空指向异常。此异常肯定会伴随你的开发人生走完的那一刻,此异常只有在引用数据类型操作的时候才会出现。NullPointerException更准确的讲法是指使用只声明而未开辟空间的引用类型所造成的问题,所以为了区分此概念,以后对于对象而言,在操作上就会给出两个不同的名词:

·声明对象:只开辟了栈内存空间的对象,无法直接使用;

·实例化对象:有了对应的堆内存空间指向,可以使用;

以上的分析流程和数组是完全一样的,因为数组也属于引用数据类型,在数组学习的时候强调过,所谓的引用传递实际上指的就是一块堆内存空间可以同时被多个栈内存所指向的操作,那么对于类也是一样的,引用传递指的是一块堆内存同时被不同的对象(不同的栈)所指向。

范例:观察引用传递

}

范例:分析以下的程序运行

}

所谓的垃圾空间实际上就是指的没有任何的栈内存指向的堆内存空间,所有的垃圾空间要等待JVM不定期的进行垃圾回收(GC),以释放内存空间,不过虽然有了所谓的垃圾回收机制,从实际的开发来讲,应该尽量的去避免垃圾的产生。

2 封装性的基本实现(重点)

封装性是作为面向对象第一大特征,但是需要提醒的是,本次所讲解的封装性只是针对于一种基本的实现,而Java之中的封装性是与权限有关的。

在真正的去研究封装操作之前,首先来观察这样的一个程序:

这个时候程序依然可以执行,因为在int的数据范围之中本身就包含了负数,所以从技术上来讲,本程序没有任何的问题,但是从实际生活这样也完全不靠谱,所以这个时候按照开发的术语来讲是业务上有问题了。

而造成这一问题的本质在于属性没有经过任何的检查,并且可以在类的外部直接操作,所以要想解决问题,就必须让属性对外部不可见,可以使用private进行属性的定义。

现在给出的提示是name和age两个属性在Person类之中是属于私有的访问,所以类的外部无法使用,即:使用private定义的内容只能在当前类中起作用。

而当属性使用了private封装之后,按照Java EE的标准来讲,此时就必须使用如下的方法格式进行属性的操作,以name属性为例,现在已经使用了private封装:

·设置属性内容(setter):public void set N ame(String n); setter要检查

以后只要是类中的属性都必须使用private封装,封装之后的属性一定要使用setter、getter设置和取得。

3 构造方法(重点)

现在可以对以上的格式分析一下:“类名称对象名称”,这个操作意味着声明一个指定类型的对象。而后new表示要开辟一个新的堆内存空间,但是在最后有一个“类名称()”,一旦操作后面有“()”表示的是一个方法,那这个就是构造方法,所以对于构造方法在之前一直在使用。

范例:观察构造

在一个类之中,构造方法的定义要求如下:

·构造方法的名称和类的名称要求完全一样,如果class Person,则构造:Person();

每当使用关键字new实例化新的对象时,构造方法都要被调用,但是这个时候也出现一个问题了,在之前貌似没有编写过构造方法,那么为什么之前没有错呢?

为了保证每一个类操作的方便,所以如果在一个类之中没有明确的定义一个构造方法的话,则会在编译的时候自动的生成一个无参的,什么都不做的构造方法:

结论:在一个类之中至少存在一个构造方法,如果一个类之中已经明确定义一个构造的话,则无参的什么都不做的构造方法将不会再自动生成了。

构造方法的基本概念介绍完了,但是构造方法有什么用呢?在之前所进行的操作可以发现是按照如下的流程:

·实例化对象:Person per = new Person() ;;

·调用类的setter方法设置内容:per.setName("张三") ;、per.setAge(20) ;;

很明显,当一个对象实例化之后就特别希望类中的属性就有内容了,这样分别调用setter方法设置实在是不方便,所以可以使用构造方法进行属性内容的传递。

构造方法的主要作用:是进行对象中属性的初始化操作。简单点理解:就是一个类对象实例化的时候可以自动的完成一些操作。

但是在这里面还有一个小说明,既然现在在构造方法之中所调用的方法是本类中的方法,所以很多时候(在开发之中必须使用)都会使用一个this来强调一下是本类中的方法:

既然构造方法本身属于方法,那么只要是方法就可以进行方法的重载,但是构造方法重载的时候根本就不用考虑方法名称(因为都跟类名称一样),只需要考虑参数的类型及个数的不同即可。

提示(以后解释):在每一个对象的构造过程(实例化过程),构造方法是整个构造过程的最后一步,所以如果现在在类中的一个属性定义时存在了默认值,那么这个默认值也只有在构造完成之后才会真正的赋值给这个属性,其他的时候这个属性的值都是其对应数据类型的默认值,例如:

从理论上讲,本类之中的name属性的默认值“无名氏”,只能构造完成之后才可以真正的给name,其他的时候name的内容就是null,但是这一特征如果要想通过代码来验证,需要点时间。

学习完构造方法之后,发现在类之中就存在了三样东西:属性、普通方法、构造方法,所以这三样东西的编写流程:

1、定义属性;

2、编写构造:如果有多个构造方法,则一定要按照参数的顺序编写(按照参数的个数升序或降序)

3、普通方法:也需要考虑到参数的个数;

4 匿名对象(重点)

匿名就是指没有名字的对象,对于对象的内存划分,很明显现在是有两块内存,一块是堆内存,另外一块是栈内存空间,但是堆内存是真正要使用的内容,而栈只是保留了一块堆内存地址而已,就是一个表示堆内存的名字,所以所谓的匿名对象指的就是没有名字的堆内存对象。

但是由于匿名对象本身没有名字,所以使用一次之后就称为垃圾了,就要等待被回收。

何种情况下需要匿名对象:一个对象只用一次,就匿名对象。

5 对象的比较和排序

如果是简单的对象之间是否相同的比较则直接重写Object提供的equals()方法和hashCode();如果想进行一组对象的比较,那么必须存在比较器的支持,而Java之中的比较器有两种:Comparable、

Comparator,下面分别说明。

5.1、重写equals()方法和hashCode()方法

范例:在String类之中如果要想判断两个字符串的内容是否相等,使用equals()方法,那么如果说现在有一

个自定义类的两个对象,要想判断是否相等,这个时候肯定要将类之中的所有属性依次进行比较判断。

如果从实际来讲肯定是自己来处理省事,因为如果把所有的比较操作交给了第三方去完成,那么就意味着,第三方必须清楚每一个操作的细节,这样做根本就不现实,而一个好的设计客户端不应该参与更多的细节方面的内容,关心的只是一个结果,而主方法就是一个客户端,所以在这个客户端之中不应该牵扯到细节。

为了解决这样的问题,那么肯定要由类提供这一操作,所以应该在Person类之中提供一个比较的操作方法。

而对象的比较操作在日后课程讲解以及开发之中,是一个极其重要的概念,一定要记住,对象比较是一个类自己提供的功能。

5.2 常用的比较器:Comparable(核心)

首先来看一下Comparable接口的定义格式:

在之前学习String的时候也学习过compareTo()方法,因为String也是Comparable接口的子类,所以String类中的compareTo()方法也是覆写而来,而如果是一个用户自己定义的compareTo()方法可以返回三种值:-1、1、0;

可以发现Comparable接口是在一个类定义的时候就默认实现好了的,所以是一个类本身自己的功能。

6.2、挽救的比较器(了解)

如果说现在定义了一个类,但是在定义类的时候并没有考虑到排序问题。

但是现在有一个新的要求出现了,突然希望可以对一组这样类的对象进行排序,而现在Person类无法修改,而又要同时满足排序要求的话,只能使用另外一种比较器:Comparator,此接口定义如下:

如果希望使用Comparator的话,就必须准备出一个专门用于实现具体比较操作的规则类。

现在这是一个专门用于定义的比较规则,而这个比较规则在使用的时候直接向sort()方法上传递对象即可。观察Arrays类的一个方法:public static void sort(T[] a, Comparator c)

面试题:请解释一下两种比较器的区别?

·Comparable:https://www.wendangku.net/doc/1517384049.html,parable是在一个类定义时直接实现的接口,属于一个类本身的功能存在,里面只有一个compareTo()方法;

·Comparator:https://www.wendangku.net/doc/1517384049.html,parator是一个挽救的比较器接口,需要单独定义一个比较规则,里面有两个方法:compare()、equals();

·但是从使用上来讲肯定使用Comparable完成。

不管何种情况,只要是存在了一组对象的比较排序操作的时候,一定就需要比较器,而且一定需要的都是Comparable。

6、思考题(核心)

定义一个表示雇员的操作类,里面属性:雇员编号、姓名、职位、工资、奖金。

要求可以计算出雇员的月薪以及年薪,并且可以通过一个方法得到一个雇员的完整信息。

简单Java类:主要组成:属性、构造方法、取得若干信息的方法、setter、getter,它的开发原则如下:·类中的所有属性必须使用private封装;

·封装之后的属性要定义setter、getter;

·类中不允许有任何的System.out.println()语句,所有的信息返回给被调用处输出;

·根据其他的要求编写相关的操作方法,但是这些方法都不回特别复杂;

·类中一定要有一个取得对象信息的方法;

·在类中可以同时定义多个构造方法,为属性初始化,但是不管有多少个,一定要保留一个无参构造。

·多个类的对象可以比较是否相同,并可以实现数组的排序。

面向对象程序设计的基本思想

课题:面向对象程序设计的基本思想 (一)教学设计思想与理论依据: 《算法与程序设计》模块的教学强调通过该模块的学习,学生应该体验客 观世界的计算机对象化表征和算法思维,掌握几种基本算法;能运用面向对 象的方法,设计解决简单问题的算法,并能初步使用一种面向对象的程序设 计语言,编制程序实现算法解决该问题。 (二)教学内容分析 教材以广东教育出版社出版的信息技术(选修一)《算法与程序设计》第五章第一节内容为结构框架,本节主要介绍面向对象思想产生的必然性和面向对象思想的机制,以及通过对同一个问题采取面向过程和面向对象两种不同思想解决的区别,让学生感受到面向对象程序设计的优越性。 (三)学生情况分析: 学生已学完教材前四章内容,基本掌握了传统的面向过程结构化程序设计方法,有一定的程序设计基础。 (四)教学策略与模式: 采用讲解、任务驱动、实践和学生自主学习相结合的教学方式 (五)教学资源: 硬件:多媒体电脑教室,投影仪,广播系统 软件:学生机安装vb6.0 (六)教学目标: 知识与技能 1.了解面向对象程序设计的基本思想和面向对象思想的由来,并能够举例说 明现实世界与面向对象系统之间的对应关系。 2.了解面向对象程序设计的优越性并初步理解其实现的机制。 过程与方法 经历分析、调试解决同一问题的两种不同实现思想的程序,初步理解面向对象程序设计的优势及面向过程程序设计的缺陷。 情感态度和价值观 (1)关注传统结构化程序设计存在的问题。 (2)产生学习面向对象程序设计技术的愿望。 (3)关注面向对象技术是当前程序设计的重要发展方向。 (七)重点难点 教学重点 (1)传统结构化程序设计存在的问题 (2)面向对象程序设计所具有的优点。 教学难点 (1)面向对象思想的产生。 (2)传统结构化程序设计与面向对象程序设计的基本点比较。 (3)实现面向对象程序设计的基本机制。 教学过程:

面向对象思想

面向对象思想----不看后悔! 前言: 整理这份资料的目的是为了帮助朋友们能够更直观的理解面向对象的编程。让后来者能够少走一些弯路。但其中不免有许多漏洞及错误,也还请前辈提出宝贵的更改意见,毕竟交流会让我们不断的进步。 技术是日新月异的,他不会等待你的成长。技术要拿出来于别人交流,自己学是自己主观意识上的理解,有对有错!交流会让进步变得更快。我认为如果计算机的体系结构不发生革命性的变化,我们现在所应用的程序语言也就百变不离奇踪了!学编程学的是什么?思想!精通一门编程语言(最好是面向对象的语言)后再去搞其他的编程语言,你会发现过程是如此的行云流水!为什么?你已经把编程的思想掌握了,再去学其他的,无非是学习一种新的语法格式了。 我在这里并不是和你讨论怎么去用C++或JAVA,也不是和你讨论怎么去学他们,我要和你讨论的是怎么去理解面向对象。其中主要会涉及到“类、对象、继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值等”其中有许多相关技术我只会一代而过,让你有一种到此一游的意味我就达到目的了,而更详细的技术内幕,就请参考其他相关书籍而深入研究吧!因为我只是在和你探讨如何去更好的理解面向对象! 如何去提高效率?重复使用资源,把别人的东西拿来就用。这是很不错的主意!而对于你来说,最大的资源就是信心以及积极性!好,打起精神来,让我们一同到面向对象的编程中去寻幽访胜吧! 注:文章中所有程序实例我都使用JAVA写的,当然在C++中也就大同小异了了,不同的地方我会指出! 注:文章中的正文文字用黑色,说明文字用蓝色,强调文字用橙色,批改文字用红色! 正文: 1.基本概念: 1.1 类与对象的初探 要我说,无论是面向过程的语言也好,面向对象的语言也罢,我首先要给他讲的都是类和对象!--------“这个世界是由什么组成的?”这个问题如果让不同的人来回答会得到不同的答案。如果是一个化学家,他也许会告诉你“还用问嘛?这个世界是由分子、原子、离子等等的化学物质组成的”。如果是一个画家呢?他也许会告诉你,“这个世界是由不同的颜色所组成的”。……呵呵,众说纷纭吧!但如果让一个分类学家来考虑问题就有趣的多了,他会告诉你“这个世界是由不同类型的物与事所构成的”好!作为面向对象的程序员来说,我们要站在分类学家的角度去考虑问题!是的,这个世界是由动物、植物等组成的。动物又分为单细胞动物、多细胞动物、哺乳动物等等,哺乳动物又分为人、大象、老虎……就这样的分下去了! 现在,站在抽象的角度,我们给“类”下个定义吧!我的意思是,站在抽象的角度,你回答我“什么是人类?”首先让我们来看看人类所具有的一些特征,这个特征包括属性(一些参数,数值)以及方法(一些行为,他能干什么!)。每个人都有身高、体重、年龄、血型等等一些属性。人会劳动、人都会直立行走、人都会用自己的头脑去创造工具等等这些方法!人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”只是一个抽象的概念,它仅仅是一个概念,它是不存在的实体!但是所有具备“人类”这个群体的属性与方法的对象都叫人!这个对象“人”是实际存在的实体!每个人都是人这个群

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

面向对象答案

一、填空题 101 Java中一个类可以有 1 个父类。 102 如果一个类的声明中没有使用extends关键字,这个类被系统默认为是Object 类的子类。 103 子类自然地继承了其父类中不是private 的成员变量作为自己的成员变量。 104 当子类中定义的成员变量和父类中的成员变量同名时,子类的成员变量隐藏了父类的成员变量。 105 子类通过成员变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为。 106 对于重写或继承的方法,Java运行时系统根据调用方法的实例的类型来选择调用哪个方法。 107 对于子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用子类的方法。 108 对于子类创建的一个对象,如果子类继承了父类的方法,未重写,则运行时调用父类的方法。 109 在Java语言中多态性体现在由方法重载实现的静态多态性和方法重写实现的动态多态性。 110 final 类不能被继承,即不能有子类。 111 abstract 类不能创建对象,必须产生其子类,由子类创建对象。 112 如果一个方法被修饰为final 方法,则这个方法不能被重写。 113 对于abstract 方法,只允许声明,而不允许实现。 114 如果一个方法被修饰为final方法,则这个方法不能被重写。 115 如果一个类是一个abstract类的子类,它必须具体实现父类的abstract方法。116 局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字this 。 117 在关键字中能代表当前类或对象本身的是this 。 118 如果在子类中想使用被子类隐藏的父类的成员变量或方法可以使用关键字super 。119 子类如果想用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super 来表示。 120 如果在子类中想使用被子类隐藏了的父类成员变量或方法就可以使用关键字super 。 121 Java中为了克服单继承的缺点,使用了接口,一个类可以实现多个接口。 122 接口就是方法定义和常量值的集合。 123 使用关键字interface 来定义接口。 124 接口定义包括接口的声明和接口体。 125 一个类通过使用关键字implements 声明自己实现一个或多个接口。 126 如果一个类实现了某个接口,那么这个类必须实现该接口的所有方法。 127 接口中的方法被默认的访问权限是public 。 128 接口的定义包括接口声明和接口体。 129 定义接口时,接口体中只进行方法的声明,不允许提供方法的实现。 130 如果接口中的方法的返回类型不是void的,那么在类中实现该接口的方法时,方法体至少要有一个return 语句。 131 内部类指那些类定义代码被置于其他类定义中的类。 132 泛型是Java 的新特性。

面向对象的基本思想

面向对象的基础思想 1 类与对象(重点) 1.1类与对象的基本关系 类与对象是整个面向对象概念之中的最为重要的组成部分。 类:类是对整个现实世界的一种合理的抽象,是一种共性的产物,在类之中主要有两个组成部分:属性(变量)、行为(方法); 对象:是一个具体的,可以使用的产物,是一种个性的表示。 实际上类中规定了一个对象的具体行为,而对象是一个类的具体表现。类只有通过对象才可以使用,所以在开发之中一定要先有类之后再定义对象。 但是一个类产生之后就好比汽车的设计图纸那样,本身并不能直接使用,必须按照图纸生产出具体的汽车之后才可以开,所以需要对象,而对象定义格式如下: 格式一:声明并实例化对象 格式二:分步完成 通过以上的格式可以发现,依然存在了关键字new,所以这一操作也一定表示要开辟堆内存空间,同时需要注意的是,当一个对象开辟空间之后可以按照如下的两个方式来操作类中的内容: ·操作类中的属性:对象.属性; ·操作类中的方法:对象.方法(); 范例:声明并实例化对象

但是类本身属于引用数据类型,所以以上的程序依然要牵扯到内存的划分,同样使用两块内存:·堆内存:保存的是每一个对象所具备的属性; ·栈内存:保存的是一块堆内存的使用地址,可以简单理解为对象名称。 1.2浅深入引用传递 清楚了以上的内存关系之后,下面再来对另外一个类似的程序进行观察。如果说现在同时产生了两个

只要发现了关键字new,那么一定表示要开辟的是一块新的内存空间,每一块堆内存空间都有一个栈内存指向它。 范例:观察如下程序

发现现在一个per对象没有进行实例化的操作,这个时候程序编译没有任何的语法错误,但是程序执行的时候出现了以下的错误提示: 现在给出的是“NullPointerException”,表示空指向异常。此异常肯定会伴随你的开发人生走完的那一刻,此异常只有在引用数据类型操作的时候才会出现。NullPointerException更准确的讲法是指使用只声明而未开辟空间的引用类型所造成的问题,所以为了区分此概念,以后对于对象而言,在操作上就会给出两个不同的名词: ·声明对象:只开辟了栈内存空间的对象,无法直接使用; ·实例化对象:有了对应的堆内存空间指向,可以使用; 以上的分析流程和数组是完全一样的,因为数组也属于引用数据类型,在数组学习的时候强调过,所谓的引用传递实际上指的就是一块堆内存空间可以同时被多个栈内存所指向的操作,那么对于类也是一样的,引用传递指的是一块堆内存同时被不同的对象(不同的栈)所指向。 范例:观察引用传递

面向对象的理解并举例

1.面向对象的理解并举例? 2.类与对象之间的关系? 3.如何对类进行分析,如果创建自定义类对象,并如何指挥对象做事情? 4.对象的内存分布图? 5.成员变量和局部变量的区别? 6.私有的使用。 7.构造函数和一般函数的区别? 8.构造函数什么时候用? 9.构造代码块的作用? 10.this关键字的特点和使用以及应用场景? 1.静态和非静态的区别。说一下内存。 2.成员变量和静态变量的区别? 3.静态的特点以及注意事项? 4.什么时候使用静态? 5.继承的好处? 6.java改良多继承的原因? 7.当使用一个已存在的继承体系时,该如何更快应用 8.什么时候用继承? 9.super和this的特点? 10.覆盖的特点,何时应用,注意事项? 11.子类的实例化过程?为什么是这样的实例化过程? 12.super语句,和this语句为什么不能同时存在,super为什么要定义在第一行? 13.抽象类的特点,以及细节? 14.接口的表现形式的特点。 15.接口的思想特点,要举例。 16.多实现和多继承的区别? 17.抽象类和接口的区别? 18.多态的体现,前提,好处,弊端。 19.为什么要将一个类定义成内部类? 20.匿名内部类的使用和细节(面试题) 21.异常的思想和体系特点? 22.throws和throw的如何使用? 23.什么时候try 什么时候throws? 24.编译时被检测异常和运行时异常的区别? 25.异常的所有细节? 26.finally的应用? 27.包的作用,名称空间的定义和理解? 28.jar包的基本使用。只要将类和包都存储到jar中,方便于使用。只要将jar配置到classpath 路径下。 29. 1

面向对象程序设计复习题及参考答案

网络教育课程考试复习题及参考答案 面向对象程序设计 一、填空题: 1.创建类的对象时,使用运算符___________给对象分配内存空间。 2.Java通过来区分重载函数。 3.在子类中使用保留字_ _可调用被子类覆盖的父类中的方法。 4.使用保留字可以从一个构造方法中调用同一个类的另一个构造方法。 5.抽象类用修饰符定义。 6.类的数据成员的访问权限修饰符一般为 7.访问权限修饰符按照访问权限的大小从大到小分别为、、 、。 8.定义类的构造方法不能有,其名称与名相同。 9.抽象方法是的特征是。 10.Java中的所有异常都是从继承来的。 11.对象引用中存储的内容是。 12.下列程序段执行后, String str1 = new String("Java"); String str2 = new String("Java"); if (str1.equals(str2)) { System.out.println("They are equal"); } else { System.out.println("They are not equal"); } 输出结果为:。 13.下面循环执行后的sun值为 int count =0, sum = 0; while ( count <10 ) { sum += count; count ++; } 14.Java语言中关键字_ _表示双精度类型。 15.保留字_ _用于导入包中的类到程序中,供程序中使用。 16.Java语言中继承是用保留字表示。 17.面向对象程序设计中,类是指。 18.对象包含和。 19.若有类定义: class B extends A{ … } 则类B是类A的_ 。 20.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_ 块来捕 获和处理异常。 21.多态是指。 22.声明常量时使用修饰符。 23.Java中异常抛出使用保留字。 24.一个类成员或者方法前面加上了修饰符,那说明该数据成员和方法可以直接通过类名 来访问和调用。

面向对象名词解释

用来解决问题的、由有限多个步骤组成的具体过程称为算法(Algorithm)。 算法指解决某个问题的严格方法,通常还需辅以某种程度上的运行性能分析。 ●算法的主要操作对象是数据, 除了输入/输出数据外, 还包括保存中间计算结果的数据。 ●通常一个实体应具有一个名字、一组表示该实体特征的数据以及若干作用在这些数 据上的行为。 ●实体具有的数据表示了它的状态,而这些状态可由实体的行为来改变。 数据+结构+算法=程序 计算机程序,也称为软件,简称程序.是指一组指示计算机或其他具有信息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某 种目标体系结构上。 通常,计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的格式,然后运行。未经编译就可运行的程序,通常称之为脚本程序 (script)。 数据可分为数值型和字符型 每一条指令都是由二进制编码表示的,这种表示程序的低级语言称为机器语言。 采用一些易记的符号表示这些代码,这种比机器更容易读/写的语言称为汇编语言。 接近自然语言的称为高级语言。 早期程序设计:追求程序的效率,依赖技艺和天份,不注重程序结构,不加限制使用goto语句。 结构化程序设计:自顶向下,逐步求精,采用单入口/单出口的控制结构(顺序、选择、循环)。 面向对象程序设计:建立在结构化程序设计基础上,程序围绕被操作的数据来设计,而不是围绕操作本身。程序设计为一组相互协作的对象而不是一组 相互协作的函数。 在C++中,类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构。通常,类规定了可使用哪些数据来表示对象以及可以对这些数据执行哪些操作。 ●从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上(bottom-up ) 的编程。 类型:要理解一个数据到底表达的是什么含义必须依赖于这个数据应做何解释,这种对数据的解释称为类型(type) ●程序中所有的数据都属于特定的类型,数据的表示方式、取值范围以及对数据可以 使用的操作都由数据所属的类型决定。 标识符是由字母或下划线开头的字母、数字与下划线的序列 ●四种基本数据类型: ?字符类型(char) ?整数类型(int) ?浮点类型 ?单精度(float) ?双精度(double)

Java面向对象编程思想

Java面向对象编程思想 Java面向对象编程思想 (1) 1 版权声明 (2) 2 第一章.浅议 (2) 2.1 什么是类,什么是对象 (2) 2.2 类实例化的几个过程详解 (3) 2.3 什么是继承 (4) 2.4 什么是重载 (5) 2.5 什么是重写 (5) 2.6 多态的三种表现形式 (6) 3 第二章构造方法 (6) 4 第三章.抽象类和方法 (7) 5 第四章.接口 (7) 6 第五章.接口和抽象类的区别 (8) 7 第六章.Java中的异常 (13) 7.1 异常和异常处理的初步认识 (13) 7.2 Java中异常的封装 (15) 7.3 异常处理try/catch/finally (16) 7.4 异常的生成再认识 (22) 7.5 Log4e插件使用 (25) 8 第七章.Java中的修饰符 (26)

1版权声明 此文档只能用于学习以及教学,请勿用作商业用途,因此而产生的法律问题,本人一概不负责。 本人声明,此文档资料为本人教学经验和网络资料收集合并之成果,如果在文档中引用了您的资料,而引起了侵犯您的权益的话,可以发送邮件知会,本人必定删除为是。 2第一章.浅议 总所周知,Java是一种面向对象的语言(所谓OOP-Object Oriented Programming),但是很多人在学习Java的过程中对什么是类,什么是对象,什么是面向对象,为什么要有继承,为什么要有实现,为什么要继承和实现,为什么要有抽象类和接口都不是十分的清楚,今天在这里,就让不才浅议,未免贻笑大方,还望各位大大不吝赐教。 注:阅读此文档,不需要你是使用Java的高手,但是已经假设你有了一定的Java技术的基础。 理解面向对象,理解抽象,我想就应该是真正开始用面向对象的思想去分析问题,解决问题了吧。 2.1 什么是类,什么是对象 首先讲清楚类和对象的区别。 类是广泛的概念,表示一个具有相同属性和方法的多个对象的集合,是一个有共同性质的群体,而对象,所谓“万物皆对象”,指的是具体的一个实实在在的东西。 例如,“人”是一个类,它可以表示地球上所有的人;而“张三”、“李四”、“爱因斯坦”等则是

面向对象的三个基本特征讲解

面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程(OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类

都可以继承Person 类。但是Leg 类却不能继承Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface 而不是Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 概念讲解 泛化(Generalization)

面向对象的逻辑思维方法

面向对象的逻辑思维方法 什么是面向对象的设计思想?也许有不少初学者对这个概念还有许多不明白的地方,特别是这个处于新旧思想交替的时代,许多人刚刚学完现在看来是快要淘汰的只是面向过程的语言。他们的脑子还没有脱离面向过程思想的束缚,抬头却发现,“面向对象”早已经流行开来,这个陌生的词漫天飞舞。随便拿起一本流行计算机技术书籍,那里会没有“面向对象”的字眼!于是心中便惶惑了:什么叫“面向对象”?不感兴趣者,一带而过;有志于在这方面发展的,匆忙找到一本有关书籍来啃究竟什么是“面向对象”。然而,要突破思想的束缚,说难也不难,说到要深刻认识却也不容易。笔者在做了一些轻量级的工作后,颇以为有点心得,不怕贻笑大方,写出已供广大同行批评指正。 “对象(Object)”一词,早在十九世纪就有现象学大师胡塞尔提出并定义。对象是世界中的物体在人脑中的映象,是人的意识之所以为意识的反映,是做为一种概念而存在的先念的东西,它还包括了人的意愿。举例说明吧。当我们认识到一种新的物体,它叫树,于是在我们的意识当中就形成了树的概念。这个概念会一直存在于我们的思维当中,并不会因为这棵树被砍掉而消失。这个概念就是现实世界当中的物体在我们意识当中的映象。我们对它还可以有我们自己的意愿,虽然我们并不需要付诸实现——只要在你的脑中想着把这棵树砍掉做成桌子、凳子等——我们就把它叫做意向。于是,对象就是客观世界中物体在人脑中的映象及人的意向。只要这个对象存在我们的思维意识当中,我们就可以籍此判断同类的东西。譬如,当我们看到另外一棵树是,并不会因为所见的第一棵树不在了失去了供参照的模板而不认识这棵树了。当我们接触某些新事物时,我们的意识就会为这些事物确立一个对象。当然这个过程是怎么形成的,那就不是我们所能讨论的问题了。上面所说的对象研究的是一般意义上的问题,因而它可以外推到一切事物。我们经常所说的“对象”,一班指的是解决信息领域内所遇到问题的方法。特别是应用软件技术来决问题的方法。如我们经常碰到的面向对象的编程(Object-Oriented Programming)、面向对象的分析(Object-Oriented Analysis)、面向对象的设计 (Object-Oriented Design)等。应用前面所介绍的关于对象的概念,可以对这些问题做进一步的分析。在面对较复杂的系统,我们可以将它作为一个对象来进行分析。一个系统(解决某个问题的全套解决方案)作为一个对象,可以由多个部分组成。同样,这个对象也可以由多个对象组成。对于同类的事物,可以由一个对象来表示。这样做的益处是显而易见的,它灵活而高效,可以大大减轻设计人员的工作量,简化实际的模型。举一个例子。在关系型数据库的设计当中,我们可以把一个元组当作对象,给它定义一组操作方法。这些方法将适用于所有元组,从而我们不必在更大的范围内去细致的考虑不同的元组(如判断一个元素是否合法):因为它们有一组公共的面向本身的方法,它们“自己”可以“解决”自己的问题。更上一层的对象可以是一个表、视图等。表对象在元组对象的基础上又有它们自己的方法,如增加、删除等。从这个层面上讲,它也只需要做“自己”的事情,

52 面向对象程序设计的基本概念

一、教学目标 1、知识与技能 (1)认识面向对象程序设计中对象、类的概念及其特征。 (2)认识面向对象程序设计中类、对象和实例的关系。 2、过程与方法 (1)能够举例说明现实世界与程序世界的对象及其特征。 (2)能够举例说明现实世界与程序世界的类及其特征。。 (3)能够画图表示类、对象和实例三者的关系。 3、情感态度和价值观 (1)能关注面向对象程序设计的基本概念。 (2)能产生对对象、类等的认识的愿望。 (3)能认识到掌握对象、类的概念是学习面向对象程序设计的前提。 二、重点难点 教学重点: (1)对象及其特征。 (2)类及其特征。。 教学难点: (1)类及其特征。 (2)类的继承。 (3)类、对象和实例的关系。 三、教学环境 1、教材处理 教材选自广东教育出版社的信息技术(选修一)《算法与程序设计》第五章第二节,本节以理论为主。面向对象程序设计涉及到一些基本的概念,认识和理解类、对象的基本概念,以及类、对象和实例之间的关系是掌握面向对象程序设计的基础,是进一步学习面向对象功能实现的的前提。内容编排尽量贯彻原教材的意图展开。 教学方法采用讲解、学生自主学习和合作学习相结合的学习方法。 2、预备知识 学生已认识面向对象程序设计的基本思想,初步了解了类、对象等概念,通过比较得知两种程序设计方法的优劣所在。有了这些基础,学习者明显产生了想进一步学习面向对象设计知识的欲望。 3、硬件要求 本节内容是纯理论,可在普通教室上,也可选在多媒体电脑教室中完成,以供学生实践。 4、所需课时:1课时 四、教学过程 导入:1、简要介绍本节课的教学目标:紧密联系现实生活中的实例理解面向对象程序设计中的主要概念如对象、类及其关系,知道这些概念在面向对象思想中的重要性。 2、联系实际生活提问导入:现实生活中我们经常说到“类”这个概念,如人类、花类、鸟类等等。“人类”又可分为黑人、黄种人、白人等小类,这些小类可以具体到某个人如张三、李四、王五等。前面我们提到计算机软件的开发过程就是人们使用计算机语言将现实世界映射到计算机世界的过程。那么这些概念在面向对象程序设计中是采用怎样的机制来实现映射的呢?这节课我们来作充分的探讨。 (一)对象

Java面向对象编程思想

一:Java面向对象的编程思想: 1.Java具有面向对象的三大特征: 封装:通过java的类来实现数据和操作方法的封装,对外界可以将每一个Java类都视为一个黑箱,只需要调用该黑箱提供的方法即可完成你想要的操作。 继承:通过类的继承,便于将统一的功能集中在父类中,实现代码的重用和可维护性多态:通过重载、重写与覆盖,实现不同类的不同形态特征。 以上这三大特征是通过具体的类、抽象类与接口技术来体现的。 2.把封装的类进行实例化,可以生成多个对象,这些对象通过消息传递来进行交互(消息传 递即激活指定的某个对象的方法,以改变其状态或让它产生一定的行为),最终完成复杂的任务。 3.一个类的使用过程,包括封装类,生成实例、使用实例进行三个操作3个过程。 4.一个类就是变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的 行为。 5.封装的类不是对象,要使用该封装的类进行操作,必须先生成这个类的一个实例------- 对象。对象的生成包括声明、实例化和初始化3个方面的内容。通常的格式为: ClassName objectName=new ClassName([paramlist]); ClassName 声明了一个类型为ClassName的对象。其中ClassName是组合类型(包括类和接口)。对象的声明并不为对象分配内存空间。 运算符new 为对象分配内存空间,实例化一个对象。new 调用对象的构造方法,返回对该对象的一个引用(即该对象所在的内存地址)。用new可以为一个类实例化多个不同的对象。这些对象占用不同的内存空间,因此改变其中一个对象的状态不会影响到其他对象的状态。 生成对象的最后一步是执行构造方法,进行初始化。由于对构造方法可以进行重写,所以通过对给出不同个数或者类型的参数会分别调用不同的构造方法 new 运算符返回对一个对象的应用,但与,C,C++中的指针不同,对象的引用是指向一个中间的数据结构,它存储有关数据类型的信息及当前对象所在堆的地址,而对于对象所在实际的内存地址是不可操作的,这就保证了安全性。 6.对于具有共同属性,又有自己特点的对象,就不能够通过单一的封装来实现了。此时可 以通过继承来实现。通过父类和子类,实现了类的层次,可以从最一般的开始,逐步特殊化,定义一系列子类。同时,通过继承也实现了代码的复用,是程序的复杂性线性增长,而不是呈几何增长。 7.继承是面向对象的基石,因为他允许创建分等级层次的类。运用继承,你能够创建一个 通用类,它定义了一系列相关项目的一般特性。该类可以被具体的类继承,每个具体的类都增加一些自己的特有的东西。在Java术语中,被继承的类叫做超类(supperclass),继承超类的类叫做子类(subclass)。因此,子类是超类的一个专用版本,它继承了超类定义的所有实例变量和方法,并且为它自己增添了独特元素。 继承是使用已经存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类。 8.尽管子类包括超类所有的成员,但它不能访问超类中被声明为private的成员。只能被它 自己类中的其他成员访问,子类没有方法访问。 9.父类和子类的相互转换:在Java中可以将子类的引用赋给父类的对象,那么这时子类中 那些不是从父类继承来的成员将不再可见,我们可以再通过强制类型转换将这个父类再转换成子类类型,那些成员又变得可见了,由此可见,将子类引用赋给父类对象时,Java

面向对象程序设计C++课后题答案

第一章:面向对象程序设计概述 [1_1]什么是面向对象程序设计? 面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是: 程序=对象+消息。 面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。 面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。 [1_2]什么是类?什么是对象?对象与类的关系是什么? 在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作 在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。 [1_3]现实世界中的对象有哪些特征?请举例说明。 对象是现实世界中的一个实体,其具有以下一些特征: (1)每一个对象必须有一个名字以区别于其他对象。

(2)需要用属性来描述它的某些特性。 (3)有一组操作,每一个操作决定了对象的一种行为。 (4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。例如:雇员刘名是一个对象 对象名:刘名 对象的属性: 年龄:36 生日:1966.10.1 工资:2000 部门:人事部 对象的操作:吃饭开车 [1_4]什么是消息?消息具有什么性质? 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。当对象接收到发向它的消息时,就调用有关的方法,执行相应的操作。消息是一个对象要求另一个对象执行某个操作的规格的说明,通过消息传递才能完成对象之间的相互请求或相互协作。消息具有以下3个性质: (1)同一个对象可以接收不同形式的多个消息,做出不同的响应。 (2)相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的。(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以不响应。[1_5]什么是方法?消息和方法的关系是什么? 在面向对象程序设计中,要求某一对象作某一操作时,就向该对象发送一个响应的消息,当对象接收到发向它的消息时,就调用有关的方法,执行响应的操作。方法就是对象所能执行的操作。方法包括界面和方法体两部分。方法的界面也就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。在C++语言中方法是通过函数来实现的,称为成员函数。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。 [1_6]什么是封装和抽象?请举例说明。

浅析软件工程中面向对象的思想和方法

浅析软件工程中面向对象的思想和方法 面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。在20 世纪60 年代以前, 软件开发者构造的软件系统大多都是较小的, 且相对简单。编程语言及编程环境也相对简单, 随着软件复杂性的增长, 为了更好地维护代码, 软件开发也需要方法来进行约束。传统的方法中, 结构化方法和基于建模方法是典型的软件开发方法。结构化方法是结构化分析、结构化设计和结构化编程的总称。结构化方法的思想萌发于20 世纪60 年代, 是在70 年代由Tom DeMacro 和Ed Yourdon 等人被系统地进出来。其目的在于, 提供一个有序的机制, 通过抽象来理解待开发的系统, 试图产生结构良好的软件系统。但对于较复杂的系统而言, 容易导致模块的低内聚和模块间的高耦合, 从面使得系统缺乏灵活性和可维护性。基于建模方法在20 世纪70 年代末提出, 即Peter Chen 的实体———关系法与Ed Codd 的关系数据库理论相结合提出的一种新的软件开发方法。其强调对信息实体建模, 而不是对象建模。结构化方法和基于建模方法都没有较强地描述系统的动态行为的能力。随着计算机技术的飞速发展, 计算机管理系统应用的普及, 企业信息化势在必行。传统开发方法结

构化开发的软件存在很多问题, 其有稳定性、可修改性和可重用性都比较差, 生产效率低等缺陷, 这是因为传统的软件开发是面向过程的。然而, 用户需求的变化大部分是针对功能的, 采用面向对象方法开发可以满足用户的需求, 因为面向对象有以下优点: 能够比较自然地反映现实事物, 可重用性、可维护性和可扩展性比较强。 第二章面向对象概述 什么是面向对象呢?“面向对象”本身没有任何意义。“对象”大概是英语中最普通的一个单词。它在字典中的定义是这样的。对象:能感觉到或能够被感觉到的东西。换句话说,对象可以是任何东西! “面向”也没有任何特别的含义,它的定义是“指向”。在这种定义下,“面向对象”被理解为形容词。因此,面向对象可以定义成这样,面向对象:指向你可以想到的任何东西。 毫无疑问,软件工业无法为“面向对象”下一个统一的定义。这种模糊性使得任何一个软件零售商都声称他们的商品是“面向对象”的。 2.1面向对象的基本概念 尽管权威人士对面向对象的概念没有达成一致的意见,但从程序设计方法的角度来看, 面向对象是一种新的程序设计范型。其基本思想是使用对象、类、封装、继承、关联、聚合、消息、多态性等基本概念来进行程序设计。

Java面向对象编程思想

第一章概述 版权声明 此文档由王健旭(https://www.wendangku.net/doc/1517384049.html, ginger547@https://www.wendangku.net/doc/1517384049.html,)负责整理总结,并对该文档保有有限责任权利,此文档只能用于学习以及教学,请勿用作商业用途,因此而 产生的法律问题,本人一概不负责。本人声明,此文档资料为本人教学经验和网络资料收集合并之成果,如果在文档中引用了您的资料,而引起了侵犯您的权益的话,可以发送邮件知会,本人必定删除为是。 注:阅读此文档,不需要你是使用Java 的高手,但是已经假设你有了一定的Java 技术的基础。 JDK---JavaDevelopmentKittool JRE – Java Runtime Enverionment Path why:让系统通过读取path中的路径得到javac 和java所在的路径,从而执行 面向对象技术自上世纪60年代诞生以来已走过了40多年的历程。现在流行的开发工具、开发过程无不以面向对象技术为基础,可见面向对象技术的重要性。 基于类的面向对象语言是面向对象世界里的主流。它包括: Simula, 第一个面向对象语言 Smalltalk, 第一个支持动态类型的语言 C++, 它的大部分基于类的特性继承自Simula. 等等等等。 与基于类的语言相对应的是基于对象的面向对象语言。这里“基于对象”的概念和把Visual Basic叫做基于对象的概念是不同的。这里的“基于对象”是指一个只以对象为中心,没有类的概念的语言,类似Python之类的语言。

Java语言作为一门“全面”面向对象的编程语言,提供了面向对象的四种基本性质:抽象性、封装性、继承性和多态性。 面向对象主要有四大特性:封装、抽象、继承和多态。各自定义: 抽象(abstraction):抽象就是将一类实体的共同特性抽象出来,封装在一个新的概念(类)中,所以抽象是面向对象语言的基础。比如鸟就是一个对象,但是我们在研究这个对象的时候把它的一些同类放到一起,一起来考虑,而且抽象的时候,只考虑我们感兴趣的一些数据;假设你自己是一个普通人,那么你可能关心的数据是,鸟类飞行的方法,鸟类吃东西的方法;假设你自己是一个生物专家,那么你可能关心的数据时,鸟类的体重,鸟类的爪子的大小,鸟类的食量等等。 人们通过抽象处理复杂性。例如,人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置,而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到杂货店,而不会因组成汽车各部分零件过于复杂而不知所措。他们可以忽略引擎、传动及刹车系统的工作细节,将汽车作为一个整体来加以利用。 上帝造人: 封装(Encapsulation ):在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性; 封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。理解封装性的一个方法就是把它想成一个黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据的访问通过一个适当定义的接口严格控制。 继承(Inheritance ):继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体; 继承是一个对象获得另一个对象的属性的过程。继承很重要,因为它支持了按层分类的概念。例如,尊贵的猎犬是狗类的一部分,狗又是哺乳动物类的一部分,哺乳动物类又是动物类的一部分。如果不使用层级的概念,我们就不得不分别定义每个动物的所有属性。使用了继承,一个对象就只需定义使它在所属类中独一无二的属性即可,因为它可以从它的父类那儿继承所有的通用属性。所以,可以这样说,正是继承机制使一个对象成为一个更具通用类的一个特定实例成为可能。 可复用可维护性可扩展性 多态:多态性(Polymorphism ,来自于希腊语,表示“多种形态”)是允许一个接口被多个同类动作使用的特性,具体使用哪个动作与应用场合有关。多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提供更好的可扩展性,同样也可以代码重用。

相关文档