1、-主讲:邓永生主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象一、从日常生活中看对象类和对象类在面向对象的程序设计中类在面向对象的程序设计中,类是程序的基本单元。类是程序的基本单元。类实例化就成为对象。类的类实例化就成为对象。类的实例化指的是创建该类实例化指的是创建该类的对象的对象.类的作用就象一个模板,所类的作用就象一个模板,所有对象有对象(实例实例)依照它来依照它来创建。创建。继承继承多态
2、多态类对象抽象抽象实例化实例化封装的实体封装的实体=数据数据+方方法法行为行为属性属性方法方法变量变量一、从日常生活中看对象成员类是的一种重要的复合数据类型。类是的一种重要的复合数据类型。基本数据类型基本数据类型:整型整型,实型实型(浮点型浮点型),),布尔型布尔型,字符型字符型 复合数据类型复合数据类型:类类,接口接口下面看看数据抽象的一个例子下面看看数据抽象的一个例子小汽车类小汽车类class 小汽车小汽车 int 颜色颜色;int 车门个数车门个数;int 极限速度极限速度;void 刹车刹车();void 加速加速();void 减速减速();计算机中计算机中的对象的原型的对象的原型
3、现实生活现实生活一、从日常生活中看对象封装l封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,实际上是使用对象对象A对象对象B方法将类的数据方法将类的数据隐藏起来,控制隐藏起来,控制用户对类的修改用户对类的修改和访问数据的程和访问数据的程度。度。数据数据方法方法方法方法私有数据私有数据公有数据公有数据一、从日常生活中看对象继承继承最主要的目的是为了继承最主要的目的是为了“扩展扩展”原类的功能、原类的功能、加强或改进原类所没有定义的属性和方法加强或改进原类所没有定义的属性和方法狗+颜色+叫()圣伯纳+雪地救人()博美+叫()+玩球()自行车(父类)山地车赛车双人车子类一、从日常
4、生活中看对象多态一个名词有多种语义一个名词有多种语义,一个方法多种功能一个方法多种功能.参数表不同参数表不同-方法的重载方法的重载类派生过程中类派生过程中,重新改写父类的方法重新改写父类的方法-覆盖覆盖public double area(double r)public double area(double a,double b)public double area(double a,double b,double c)3.02.0,3.03.0,4.0,5.0例如:声明三个同名方法例如:声明三个同名方法area求圆、矩形、和三角求圆、矩形、和三角形的面积形的面积类类主要内容二、面向对象概念:
5、类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象二、面向对象概念:类与对象我们经常说:物以类聚,人以群分。它反映了人们对客观事物分类管理的思想,要想分门别类地管理好各种事物,必然存在着对客观事物的最基本的认识,对同一种事物要有明显的划分依据,也就是要描述清楚同一种事物共同的基本外观特征(属性)及共同的行为能力(方法)。这个过程可以通过观察、归纳、总结等方式得到对客观事物的共性描述,显然,这是一个把客观事物映象到人脑1、
6、类二、面向对象概念:类与对象对象就是类所描述的同种事物中实实在在的一个个体。在程序中,当一个对象产生之后就意味着它具有了生命特征,程序中的对象是类的一个实例。2、对象中形成思想认识的抽象思维过程。所以(包括外观世界客观存在的、抽象的、有生命的、无生命的)这里的共性包括事物本身的属性特征和基本行为特征。3、类与对象间的关系二、面向对象概念:类与对象主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象
7、三、类的定义语法如下:修饰字 class 类名类名 extends 父类名父类名 implements 接口列表接口列表 类体类体 1)、创建类的关键字是“class”2)、类以文件的形式保存在硬盘3)、类的名字必须和文件名相同4)、定义类的类型的关键字有3个:public、abstract、final5)、类的构造器的名字必须和类名相同6)、方法申明或定义1、定义类三、类的定义1)、在一个类中与类同名的方法叫构造方法,系统在产生对象时会自动执行2)、构造方法通常用于定义一些初值或其他准备工作3)、一个类可以有多个构造函数(重载),根据参数的不同决定执行哪一个4)、如果程序中没有定义构造方法,
8、则创造实例时使用的是缺省方法,它是一个无内容的空方法2、:是提供对象初始化的专用方法,不能被显示地直接调用。三、类的定义声明成员方法的格式为:static ()其中,修饰符和成员变量的修饰符一样,含义也相同。例如:public void SetDate(int y,int m,int d).3、声明或定义类的方法super指这个对象的父类super()用来调用父类中的方法及变量数据 public class apple extends fruits public apple(int price)super(price);以上句子表示使用超类的构造函数生成实例。super必须是子类构造器的第一条
9、语句。三、类的定义4、super与this1)、super三、类的定义2)、thisthis 指对象自己this 的作用主要是在当前对象中引用自己。如:要将对象自己当作参数,传送给别的对象中的方法。class ThisClass public static void main()Bank bank=new Bank();bank.someMethod(this);class Circle int r;Circle(int r)this.r=r;public area()return r*r*3;主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基
10、本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象四、面向对象的基本特征面向对象的三大基本特征是:继承、封装、多态。1、继承(inherit)继承是通过extends让某个类型的对象获得另一个类型的对象的特性的方法。例如布谷鸟属于飞鸟类,也属于鸟类。可见,子类都具有父类的公共特性。子 类 不 能 继 承 父 类 中 访 问 权 限 为private的成员变量和方法;Java不支持多重继承,即一个类从多个超类派生的能力。四、面向对象的基本特征2、封装(encapsulation)访问控制符是Ja
11、va语言控制对方法和变量访问的修饰符。对象是对一组变量和相关方法的封装,其中变量表明了对象的状态,方法表明了对象具有的行为。通过对象的封装,实现了模块化和信息隐藏;通过对类的成员施以一定的访问权限,实现了类中成员的信息隐藏。private、default、protected、public 四、面向对象的基本特征关于变量和方法的访问权限修饰字:public、protected、private1)、public:任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。2)、protected:在同一类,同一包可以使用。不同包的类要使用这种变量和方法,必须是该类的子类才可以存
12、取变量或调用方法。3)、private:不允许任何其他类存取和调用。四、面向对象的基本特征4)、finalfinal 方法之前,允许继承防止覆盖此方法final 类之前,标是该类不能被继承final 变量之前,定义一个常量静态变量静态变量(类变量),声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。声明为static的方法有以下几条限制:它们仅能调用其他的static 方法;它们只能访问static数据;它们不能以任何方式引用this 或super。5)、static 四、面向对象的基本特征成员的可视
13、性描述成员的可视性描述public protected 缺省缺省 privateyesyesyesyesyesyesyesyesnoyes*nonoyesnonono同一类中同一类中同一包中同一包中不同包的不同包的子类中子类中非子类非子类也不同包也不同包修饰符访问规则:public,private,protected,default。四、面向对象的基本特征3、多态(Polymorphism)在Java语言中,多态性体现在两个方面:由实现的静态多态性(编译时多态)和实现的动态多态性(运行时多态)。1)、编译时多态在编译阶段,编译器会根据参数的不同来静态确定调用相应的方法,即具体调用哪个被重载的方
14、法。2)、运行时多态:由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。消息就是一个对象向另一个对象发出的服务请求,它应该包含下述信息:提供服务的对象标识、服务标识、输入信息和应答信息。服务通常被称为方法或函数。void 与 return四、面向对象的基本特征4、消息传递 主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、
15、接口一、一、面向对象概念:类与对象面向对象概念:类与对象五、抽象类、接口抽象类是在定义类时用 abstract 修饰的类,用abstract 修饰的方法叫抽象方法。一个类中如果有抽象方法,那它一定属于抽象类。抽象类不能够直接用new创建相应的对象,也就是它不能够被实例化,必须通过继承产生子类,再通过子类得到对象。在抽象类中如果有抽象方法,一定要在子类中实现抽象类中的抽象方法。1、抽象类五、抽象类、接口2、接口Java语言只支持单继承机制,不支持多继承。接口和抽象类非常相似,都是,。Java语言不仅规定一个子类只能直接继承自一个父类,同时允许一个子类可以实现多个接口。所以,从本质上讲,Java语
16、言是借助于接口来实现C+的多继承机制的。五、抽象类、接口1)、定义接口接口的定义格式:修饰符interface接口名.修饰符可以是public,也可以缺省。当为缺省时,接口只能被与它处在同一包中的方法访问;当声明为public时,接口能被任何类的方法访问。例如:public interface PrintMessage .五、抽象类、接口说明:接口中定义的所有成员变量都必须设置初值若接口定义为默认型访问权限,则接口中的成员变量全部隐含为final static型。这意味着它们不能被实现接口方法的类改变,并且为默认访问权限当接口保存于文件时,其文件命名方法和保存类的文件命名方法类同一个文件可以包
17、含若干个接口,但最多只能有一个接口定义为public,其他的接口必须为默认类必须实现定义在接口中的所有方法五、抽象类、接口2)、接口与抽象类的区别定义类时实现接口用关键字 implements,一个类只能继承一个父类,但可以实现若干个接口接口中的成员变量只能用public、static和final来定义,如果不声明,则默认为public static final。类定义的完整格式是:class extends implements,.主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课
18、程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象六、面向对象设计原则面向对象设计原则三大基本原则:1、针对接口编程,而不是针对实现编程 2、优先使用对象组合,而不是类继承 3、封装变化点就一个类而言,应该仅有一个引起它变化的原因。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。测试驱动的开发实践常常会在设计出现臭味之前就迫使我们分离职责。(1)、单一职责原则()六、面向对象设计原则软件实体(类、模块、函数/方法)应该是可扩展的,但不应该是可修改的。也就是说:对于扩展是开放的,对于更改是封闭的。(2)、开闭原则()子类应当可以替换父类并出现
19、在父类能够出现的任何地方。(3)、替换原则()、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。、抽象不应该依赖于细节,而细节应该依赖于抽象。(4)、依赖倒置原则()六、面向对象设计原则采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。(5)、接口分离原则()主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象七、小结1、类是Java面向对象编程的基本元素,它定义了一个
20、对象的结构和功能 2、构造方法3、类继承,this和super4、类变量(static类型)、方法和实例变量、方法5、方法覆盖和重载、抽象类与接口6、面向对象特性7、面向对象设计原则七、小结8、本讲还学习了如下关键字:public、protected、private、extends、abstract、interface、implements、static、final、super、this、void、class、return。主要内容二、面向对象概念:类与对象二、面向对象概念:类与对象三三、类的定义类的定义四四、面向对象的基本特征六、六、面向对象设计原则 七、七、小结八、课程实训八、课程实训五、抽象类、接口五、抽象类、接口一、一、面向对象概念:类与对象面向对象概念:类与对象八、课程实训实训内容:1、随机生成30个1200之间的整数,并按由小到大的顺序分别打印出所有的奇数和偶数。2、完成第一题的功能,但要求排序的功能由另一个类来完成。实训目标: