面向对象编程oop

上传人:tian****1990 文档编号:75667562 上传时间:2019-01-31 格式:PPT 页数:41 大小:1.09MB
返回 下载 相关 举报
面向对象编程oop_第1页
第1页 / 共41页
面向对象编程oop_第2页
第2页 / 共41页
面向对象编程oop_第3页
第3页 / 共41页
面向对象编程oop_第4页
第4页 / 共41页
面向对象编程oop_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《面向对象编程oop》由会员分享,可在线阅读,更多相关《面向对象编程oop(41页珍藏版)》请在金锄头文库上搜索。

1、第六章,面向对象编程OOP,2,内容提要,本节内容提要 计算机语言的发展历史 面向对象的设计思想 面向对象编程的特征 对象和类 概念 类的定义 对象的产生 类之间的关系 方法 构造方法 this 关键字 static 关键字 package 和 import 访问控制,3,计算机语言的发展历史,计算机语言的发展历史(复习) 第一代计算机语言 机器语言 第二代计算机语言 汇编语言:助记符表示指令、数据、寄存器等 第三代计算机语言 高级语言:屏蔽机器细节,更接近人类的语言 面向过程的 面向对象的(Object Oriented Programming),4,面向过程和面向对象,面向过程的 程序被认

2、为是在一个数据集合上进行的一系列操作 面向过程是在方法(函数)层次上重用代码 面向对象编程(Object Oriented Programming) 实质是把数据(属性)和处理这些数据的过程(方法)合并为一个单独的“对象”一个具有确定特性的自完备的实体 面向对象是在对象层面上重用,更高级、更抽象,5,面向过程和面向对象,我要吃饺子 面向过程: 我买菜、我和面、我调馅儿、我包饺子、我煮饺子 面向对象: 我餐馆,6,面向对象编程的特征,面向对象编程的特征 封装 指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性 封装允许类的客户不必关心类的工作机理就可以使用它。 就象驾驶员不必了解发动

3、机的工作原理就可以驾驶汽车一样,类的客户在使用一个类时也不必了解它是如何工作的,而只需了解它的功能即可 所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,从而达到数据隐藏的目的 继承 继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率 多态 多态性描述的是同一个消息可以根据发送消息对象的不同采用多种不同的行为方式 前提:面向对象中的多态 三个条件:子类继承父类,子类覆盖父类,父类指向子类,7,类和对象,类和对象 概念 类 类是同一类型的抽象,例如:房子、汽车 有句话这样讲”物以类聚“ 类是一个静态概念

4、 组成 属性 方法 对象 对象是类的具体实现,例如:我的房子、我的汽车 对象具有类的特征 类和对象的关系 类是对象的模板,对象是类的具体实例,8,类和对象,学生,姓名 年龄 性别 学号 方法:选课(),类,对象1,学生1,张三 20 男 10011 选课:日语,对象2,学生2,李四 20 男 10012 选课:法语,9,类之间的关系,类和对象 类之间的关系 关联关系 使用实例变量实现的,10,类和对象-类之间的关系,类和对象 类之间的关系 聚集关系 是关联关系的一种,是一种强关联关系,是整体和个体的关系,11,类和对象-类之间的关系,类和对象 类之间的关系 组合关系 也是一种关联关系,比聚合还

5、强的一种关联关系,12,类和对象-类之间的关系,类和对象 类之间的关系 继承关系(泛化关系),13,类和对象-类之间的关系,类和对象 类之间的关系 接口实现关系,14,OOP,面向对象编程: 重用性 扩展性 易于维护 面向对象编程更符合人类的思维习惯,容易理解,15,类的定义,类和对象 类的定义 语法 class 例如: public class Employee /成员变量 private String name; private double salary; /方法 public void setSalary(double salary) this.salary = salary; 对象的

6、产生 使用 new 关键字 使用 “.” 访问属性,方法 成员变量(属性) 方法(函数),16,方法的定义,方法 定义 方法是能够完成独立功能的程序片段 目的是提供程序的可重用性 分类 类方法,也叫静态方法 在方法前面有 static 关键字 实例方法 在方法前面没有 static 关键字 方法重载 当类中的方法名相同,参数类型或者数量不同时,称为方法的重载(overload) 例如: public void println(int i); public void println(char c); public void println(String s); 注意:不能通过返回值类型来完成方法

7、重载;当参数列表不同时,可以改变返回值类型 return 返回到方法调用处 补充:方法(函数),17,类、方法命名规则,类名:一般用名词,首字母大写。 如:学生、职员、汽车、订单、文件 异常、信息流、日志、事件等 方法名:一般用动词,首字母小写。 如:打印、设置、查找、销毁、删除、运行等,18,类、方法演示,public class Employee /类属性的封装,成员变量 private String name; private int age; private String sex; private String address; private double salary; publi

8、c void setName(String _name) this.name = _name; /方法的封装 public void setAge(int _age) if(_age = 200) age = 0; else age = _age; public int getAge() return age; ;,成员变量默认值 int : 0 float : 0.0f double : 0.0 char : u0000 boolean : false String : null 对于局部变量, 必须先赋值再使用,19,方法重载(overload),public class OverLoad

9、Test void max(int a,int b) System.out.println( a b ? a : b); void max(float a ,float b) System.out.println( a b ? a : b); /void maxFloat(float a,float b) /void maxDouble(double a,double b) /void maxShort(short a,short b) void max(double a ,double b) System.out.println( a b ? a : b); void max(short a

10、 ,short b) System.out.println( a b ? a : b); public static void main(String args) OverLoadTest ol = new OverLoadTest(); ol.max(3,4); ol.max(3.4f,4.5f); short a = 3; short b = 4; ol.max(a,b); ,20,类的继承演示(1),public class Animal public void play() System.out.println(“动物在玩耍.“); public static void main(St

11、ring args) Dog d = new Dog(); d.play(); Cat c = new Cat(); c.play(); ; class Dog extends Animal ; class Cat extends Animal ;,21,类的继承演示(2),public class Animal public void play() System.out.println(“动物在玩耍.“); public static void main(String args) Dog d = new Dog(); d.play(); Cat c = new Cat(); c.play()

12、; ; class Dog extends Animal public void play() System.out.println(“狗在玩耍“); ; class Cat extends Animal public void play() System.out.println(“猫在玩耍“); ;,22,多态性演示(3),public class Animal public void play() System.out.println(“动物在玩耍.“); public static void main(String args) /父类的引用指向子类的实例 Animal animal =

13、new Dog(); animal.play(); animal = new Cat() /相同的方法,由于实例的不同表现出不同的形态和结果 animal.play(); class Dog extends Animal public void play() System.out.println(“狗在玩耍“); class Cat extends Animal public void play() System.out.println(“猫在玩耍“); ,注意:静态方法可以被继承(严格来说应该叫隐藏),但不能被重写。因此静态方法 不存在多态。,23,构造方法,构造方法 特点 是一个特殊的方法

14、 与类同名 没有返回值 可以重载 作用 初始化,24,构造方法演示-1,public class ConstructorTest public ConstructorTest() System.out.println(“构造方法调用.“); public static void main(String args) ConstructorTest ct =null; System.out.println(“-“); /调用构造方法 ct = new ConstructorTest(); 当一个类我们没有写构造方法时,JDK编译器会生成一个空构造,25,构造方法演示-2,public class

15、Student String name; /带参数的构造方法 public Student(String _name) name = _name; /不带参数的构造方法,构造方法重载 public Student() public String getName() return name; public static void main(String args) Student s = new Student(“张三“); System.out.println(“学生是:“+s.getName(); ;,26,this 关键字,this 关键字 意义 用在方法里 代表调用该方法的当前对象 用在

16、构造方法里 该构造器所创建的新对象 用法 在类本身的方法或构造器中引用该类的实例变量和方法 将当前对象作为参数传递给其它方法或构造器 用来调用其他的重载的构造器,必须是构造方法中的第一条语句 实例 MyDate.java,27,this演示,public class Birthday private int year; private int month; private int day; public Birthday(int year) this.year = year; public Birthday(int year,int month) this(year); this.month = month; public B

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号