面向对象和面向对象的高级概念.doc_第1页
面向对象和面向对象的高级概念.doc_第2页
面向对象和面向对象的高级概念.doc_第3页
面向对象和面向对象的高级概念.doc_第4页
面向对象和面向对象的高级概念.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象主要内容:1. 方法的定义2. 类的定义3. 对象的实例化4. 构造方法5. 值传递6. 访问控制修饰符7. 面向对象的特性a) 封装b) 继承c) 多态8. 关键字9. 抽象类10. 接口11. 作业一、 方法的定义(函数)a) 方法的基本格式 修饰符 返回值类型 方法名(参数1 ,参数2 .)注: 1. 中的可以省略 2.返回值类型:void 无返回值类型,还有基本数据类,引用数据类型 3.参数可以有多个,通过传递赋值,没有实际的值,叫做形参4. () 是方法的象征5. 是方法体,必须写,不能省略b) 无参数的无返回值的方法c) 有参数的无返回值的方法d) 无参数的有返回值的方法e) 有参数有返回值的方法二、 类的定义世界万物是有什么组成的,在java的世界中,一切皆是对象。那我们怎么来定义类呢?那我们身边有哪些对象呢?比如:人具有特征:身高,体重,姓名,性别等等具有行为:吃饭,穿衣,睡觉,运动,思考,等等比如:汽车具有特征:颜色,品牌,性能等等具有行为:行驶,倒车,鸣笛等等比如:灯泡具有特征:价格,大小等等具有行为:开,关,亮,暗等等类的属性:对象所具有的特征类的方法:对象所执行的操作类可以看成一类对象的模板对象可以看成是类的一个实例(实体)举例:自己定义人(People)的类a) 成员变量(属性,字段(field),全局变量)1. 在方法的外部,类的内部声明2. 成员变量可以不赋初始值使用b) 局部变量1. 在方法的内部声明2. 必须赋初始值之后才能使用注意:简单来说,在哪个括号中声明的,可以在哪个括号中使用练习:编写学生(Student)类 ,如下图(可以自由发挥,作为个人简历)三、 对象的实例化a) 格式: 类型 对象名 = new 类型();b) 作用: 在堆内存中创建一个类的对象c) 注意: 1. new 是关键字2. 自己声明的类也是一个类型3. 对象名必须是标识符4. 类型必须是引用数据类型,自己声明的所有的类都是引用数据类型四、 访问成员变量和成员方法用对象名.访问成员变量或方法例如: Student s = new Student(); = “张三”;/修改学生的属性那么的值System.out.println(“姓名:”+s);/输出学生的姓名s.print();/调用学生类的print的方法,打印学生的所有信息Student s1 = new Student();System.out.println();注: 1. s1中name的值是多少呢2. 每一个对象中的成员变量都有自己的存储空间3. 每一个对象都只能改变自己空间中的属性五、 类与对象的关系 类与对象的关系 类: Student 对象 : s1 (学生1) s2 (学生2) 类: 类可以看成是一类对象的模板 类是抽象的概念,只是模板 类只是对具体实物的抽象 对象: 对象是类的一个具体实例 对象是实体 对象是实际存在我们可观世界的实体六、 构造方法a) 定义1. 方法与类同名2. 没有返回值(void是无返回值类型)3. 可以用访问控制修饰符修饰b) 作用1. 用new + 构造方法创建一个对象,并执行构造方法中的代码2. 可以通过构造方法给成员变量赋初始值c) 注意1. 可以理解为构造方法是由返回值得,调用构造方法返回一个当前类的对象2. 也可以叫构造函数3. new + 带参数的构造方法也可以创建一个对象4. 也可以直接写new +构造方法执行代码七、 值传递a) 基本数据类型传递的是值,不能改变原来方法中局部变量的值b) 引用数据类型传递的是对象,可以改变对象中的值c) 不能改变对象的引用八、 访问控制修饰符关键字本类子类同包所有的类privatedefaultprotectedpublic注:1. private , protected 不能修饰类2. 都可以修饰构造方法,限制构造方法的使用3. default 不能写出来 九、 面向对象的特性a) 什么是面向对象 面向对象是java的基本思想 面向对象和面向过程都是编程语言的思想 面向过程强调的是对象的行为 面向对象是将功能封装起来,强调的是具有功能的对象 面向对象的三大特性:封装,继承和多态b) 面向对象和面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。c) 封装 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 封装的思想: 1. 隐藏类的实现细节2. 迫使用户使用接口去访问3. 使代码更好的维护 如何封装1. 修改属性的可见性,设为private2. 创建getter和setter方法,便于读写属性3. 在方法中加入对属性的控制 封装的好处隐藏类的实现细节只能通过规定方法访问数据方便加入控制语句方便修改实现d) 继承 什么是继承 是指自然人死亡后,由法律规定的人或遗嘱指定的人依法取得死者遗留的个人合法财产的法律制度。(这是法律中的继承) 是java中一个类(子类)可以继承另外一个类(父类)中的所有的成员变量和方法 继承的思想减少代码的冗(rong)余,增加代码的重用 怎么继承动物(Animal)鸟 (Bird )鱼(fish)家禽(poultry)麻雀Sparrow黄鹂Oriole金鱼Goldfish带鱼Hairtail鸡Chicken鸭Dock所有的鸟,鱼,家禽都属于是动物,应该拥有动物所有的属性和方法,所以应该继承动物所有的特征和行为 ,金鱼带鱼都属于是鱼,所以应该继承鱼类所有的特征和行为。鱼 继承 动物 Fish extends Animal鸟 继承 动物 Bird extends Animal麻雀 继承 鸟 Sparrow extends Bird带鱼 继承 鱼 Hairtail extends Fish动物是鱼的父类(基类、超类)鸟是动物的子类(派生类)那带鱼能不能既继承鱼也继承动物呢?不能,因为java只支持单继承 继承的好处n 继承是传递的,在一些比较一般的类的基础上构造、建立和扩充新类的最有效的方法n 简化了人对事物的认识和描述,清晰体现相关类之间的层次结构关系n 继承提供了软件的重用功能,减少代码和数据的冗余,大大增加了程序的重用性n 继承通过增强一致性,减少了模块之间的接口和界面,大大增加了程序的易维护性n 多重继承机制,一个类可以是多个类的父类,也可以从多个类中继承属性和方法,出于安全和可靠性的考虑,仅支持单重继承,通过接口机制来实现多重继承 继承的例子上述例子表明:子类继承父类,子类可用使用父类中的成员,就像是子类自己的一样 构造方法的特殊性n 构造方法不能被继承n 在调用子类构造方法的时候首先调用父类的构造再执行本类的构造方法 重载n 重载的定义:l 同一个类中l 方法名相同l 参数不同l 返回值可以不一样n 重载的例子: 重写n 重写的定义:l 子类中l 方法名相同l 参数相同l 返回值相同l 不能有比父类有更严格的访问权限l 不能抛出比父类更多的异常n 重写的例子e) 多态 什么是多态n 多态顾名思义就是多种形态的意思n 一类的事物存在多种形态,不同的对象收到同一个消息可以产生完全不同的效果。 多态的前提n 继承n 重写n 向上转型 多态的体现n 狗 g = new 狗();n 例如:动物 dw = new 狗();n 父类的引用指向子类的对象n 用户发送了一个通用的对象,实现的细节有接受对象自行决定 对象的引用n 父类的引用指向子类对象,不能访问子类中特有的方法n 父类的引用只能访问父类的成员,但执行的是子类重写父类的成员 多态的作用n 提高了程序的扩展性和后期的可维护性n 增强了软件的透明度,可理解性,可扩展性n 增强了灵活性和重用性n 多态是面向对象的重要思想,面向对象没有多态也就失去了色彩 注意n 存在继承或者实现n 存在重写方法 强制转换n 动物 dw = new 狗();可以将dw表示的对象转化为”狗”对象n 可以想象为是一个贴着动物标签的盒子中放一个狗对象n 不能任意转换类型,必须转换为对应的类型n 用关键字 instanceof(实例类型判断运算符) 判断是否是某个类型 实验1n 动物园有这些动物:狗、兔子等,饲养员每天都会给这些动物喂食,狗喜欢吃骨头、而兔子喜欢吃胡萝卜,通过Java程序模拟饲养员喂食 实验21. 编写一个类Shape类,具有一个draw方法,派生出三个子类 Circle(圆)Triangle(三角形), Rectangle(矩形),子类中重写了父类的方法。2. 编写一个测试类Test, 具有一个方法test ,该方法的参数类型为 Shape , 然后在此方法体中调用Shape的draw方法.3. 在TestShape中添加main方法,调用Test 的test方法,随意生成一个Shape子类的实例 ,并将该实例当做参数传入。十、 关键字a) This1. this可以看成是一个变量,它的值是当前对象的引用2. 在类的成员方法的使用this关键字代表使用该方法的对象的引用3. 可以使用this关键字处理成员变量和参数重名的问题4. 不能用在static代码块中5. 可以在构造方法中用this(参数列表) 访问本类中的其他构造方法,必须放在第一行b) Super1. super可以看成是一个变量,它的值代表的是当前对象父类的引用2. 可以在类的成员方法中表示父类对象3. 一般不在static代码块中应用4. 在构造方法中第一句默认是的super() ,必须放在第一行c) Static1. 用static修饰的方法叫做静态的方法,用static的修饰的变量是静态的变量,在系统加载类的时候,首先加载静态的变量和方法2. 静态的方法不能直接调用非静态的成员3. 非静态的可以直接访问静态的4. 静态的方法不需要所属类的任何实例引用,用类名.成员可以直接引用5. 非静态的仅限于实例引用d) Package1. Java的包机制2. 用点来表示包的层次结构3. 必须放到java文件的第一行(在package关键字上面只能有注释和空白)e) Import1. 导包关键字2. 引用不同包中的类必须导包3. 程序在执行的时候会自动加载java.lang包中的所有类,所以在用到lang包中的类的时候不用导包f) Final1. 用final修饰的变量不能被改变2. 用final修饰的方法不能被重写3. 用final修饰的类不能被继承十一、 抽象类 抽象类的特点1. 抽象类用abstract修饰2. 抽象类不能直接实例化3. 抽象类中可以用main方法4. 用abstract修饰的方法是抽象的方法5. 抽象的方法只有声明,没有实现6. 有抽象方法的类必须是抽象类7. 抽象类一般作为其他类的父类8. 抽象类作为其他类的父类,抽象的方法必须重写9. 抽象类可以没有抽象的方法 举例a) 由于Shape类计算周长和面积的方法无法确定,那么就可以将这样的方法声明为抽象的,以便在具体的子类中进行实现。十二、 接口 接口的原理在软件工程中,经常将一个大的项目分由不同的开发小组共同开发,各个小组的开发工作是并行的。在很多时候,对于不同小组的程序员来说,清楚地说明各自的软件如何相互作用,并就此达成统一“约定”是很重要的。这种情况下,每一小组都可以在对其他小组怎么编写代码一无所知的情况下,就能编写自己的代码,并且各自小组编写的代码能很好的协同工作。接口就是这样的“约定”。 接口的特点1. 接口可以看做是一个特殊的抽象类2. 接口不能直接实例化3. 接口中只有常量和抽象的方法4. 接口中没有main方法5. 接口可以被类实现 ,实现的关键字是implements6. 类实现接口就必须实现类的方法7. 接口之间可以多继承8. 接口与类之间也存在多态性(也可以理解接口是类的父类)十三、 作业1. 某公司的雇员分为以下若干类:a) Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。b) SalariedEmployee:Employee的子类,拿固定工资的员工。属性:月薪c) HourlyEmployee:Employe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论