第五章类和对象(上)_第1页
第五章类和对象(上)_第2页
第五章类和对象(上)_第3页
第五章类和对象(上)_第4页
第五章类和对象(上)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、http:/类和对象(上)第 五 章http:/中国十大品牌IT教育机构Java中的数组是引用数据类型,必须由new关键字在堆中分配内存;Java虚拟机的垃圾回收机制将自动释放不再使用的内存;使用命令行参数接收来自用户的输入。回顾http:/中国十大品牌IT教育机构本章相关词汇(蓝色为关键字)单 词说 明class类,种类public公共的,公有的private私有的,私人的object对象,物体encapsulation封装,包装attribute属性,特征method方法member成员constructor构造方法,构造器http:/中国十大品牌IT教育机构本章目标了解什么是面向对象面向

2、对象的基本概念1. 类2. 对象3. 封装4. 继承5. 多态如何定义类,如何创建对象成员运算符访问控制权限:public和private构造方法http:/中国十大品牌IT教育机构什么是面向对象?Object Oriented Programming对象对象以以为导向的为导向的程序设计程序设计面向对象就是使用对象进行程序设计,简写面向对象就是使用对象进行程序设计,简写成成OOP。http:/中国十大品牌IT教育机构面向对象的编程语言如今,面向对象的编程思想已经成为主流面向对象的编程语言正大行其道,最具代表性的有:C+JavaC#连数据库也开始面向对象了,如Oracle。http:/中国十大品

3、牌IT教育机构面向对象的编程思想OOP旨在计算机程序中旨在计算机程序中模拟现实世界中的概念模拟现实世界中的概念在计算机程序中用相似的在计算机程序中用相似的实体模拟现实世界中的实体实体模拟现实世界中的实体在在OOP中,现实世界的中,现实世界的所有事物全都被视为对象所有事物全都被视为对象设计和实现设计和实现软件系统的方法软件系统的方法http:/中国十大品牌IT教育机构C语言的编程方式C语言是结构化的编程语言(Structured Programming,简作SP);强调精巧的数据结构和优越的算法,关注程序的运行效率;不适合于大规模的程序开发;程序模块之间协调性差,程序的重用性、安全性、健壮性和可

4、维护性都存在较大的缺陷。http:/中国十大品牌IT教育机构SP和OOP对比SPOOP设计思路自顶向下、层次化、分解自底向上、对象化、综合程序单元函数模块对象设计方法程序 = 算法 + 数据结构程序 = 对象 = 数据 + 方法优点相互独立,代码共享接近人的思维方式模拟客观世界缺点数据与程序不一致维护困难客观世界的无序性概念不成熟http:/中国十大品牌IT教育机构面向对象的三大原则封封 装装继继 承承多多 态态http:/中国十大品牌IT教育机构对象对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为;对象其实就是“数据”和“函数”的封装体,其中:1. 数据表示自身的

5、状态,也称作“属性”或“成员数据”;2. 函数表示自身的功能,也称作“方法”或“成员函数”。姓名:布兰尼姓名:布兰尼职衔:收银员职衔:收银员年龄:年龄:35体重:体重:60千克千克操作:操作:收款收款打印帐单打印帐单收银员对象收银员对象顾客顾客姓名:朱丽叶姓名:朱丽叶年龄:年龄:28体重:体重:52千克千克操作:操作:购买商品购买商品顾客对象顾客对象状态状态行为行为http:/中国十大品牌IT教育机构类人们为了更好地认识世界,将现实生活中的事物(对象)划分成类;同一类中的事物总是具有一些共性;类以共同的特性和行为定义实体;类是具有相同属性和和行为的一组对象的集合。人人 类类张张三三李李四四王王

6、五五郑郑六六http:/中国十大品牌IT教育机构属性事物的特性在类中用变量表示;每个对象的每个属性都拥有其特定的值;属性名称由类的所有对象共享;对象或实体拥有的特征在类中表示时称为属性。学生对象学生对象姓姓 名名年年 龄龄住住 址址属属 性性http:/中国十大品牌IT教育机构方法事物的行为和动作在类中用函数表示;每个对象都有相同的动作和行为;对象执行的操作在类中表示为方法。学生对象学生对象吃吃 饭饭方方 法法睡睡 觉觉上上 课课http:/中国十大品牌IT教育机构类和对象的区别类是用来描述实体的“模板”或“原型”;对象是实际的实体,每一个对象都是类的一个具体实例;类用来定义对象所有的属性和方

7、法,同一类的所有对象都拥有相同的特征和操作;可以将类理解成生产产品的模具,而对象则是根据此模具生产的一个个产品。http:/中国十大品牌IT教育机构类与结构最简单的理解方式:类类结构体结构体结构体变量结构体变量对象对象CJava区别在于:结构体一般只有数据(属性)而区别在于:结构体一般只有数据(属性)而没有函数(方法)。没有函数(方法)。http:/中国十大品牌IT教育机构封装将某些东西包装在一起,然后以新的完整形式呈现出来;隐藏属性、方法或实现细节的处理方式称为封装;封装其实就是有选择性地公开或隐藏某些信息,它解决了数据的安全性问题。一个人类的对象一个人类的对象姓名:张三姓名:张三体重:体重

8、:50kg密码:密码:*属性属性走路走路吃饭吃饭方法方法可以公开可以公开无所谓无所谓不可以公开不可以公开http:/中国十大品牌IT教育机构继承继承就是重用现有的类来生成新类的一种特征;通俗地讲就是从现有的类(即父类或基类)创建新类(子类或派生类)的过程;现实生活中,继承可以达到财产重用的目的,而在Java中,继承可以使代码重用。http:/中国十大品牌IT教育机构多态多态是指同一函数在不同的类中有不同的实现;多态的好处就是使类更灵活,更便于扩充。http:/中国十大品牌IT教育机构抽象 把相同的或相似的对象归为一类的这个过程就是抽象,所以,抽象就是分析问题的方法; 抽象的基本原则: 只关心主

9、要问题,而不关心次要问题; 只关心主要矛盾,而不关心次要矛盾; 只关心相同的东西,而不关心不同的东西; 只关心问题是什么,能够完成什么,而不关心怎样去完成。 抽象的过程其实就是面向对象编程的核心思想。http:/中国十大品牌IT教育机构在Java中定义类/*定义学生类定义学生类*/class Student String name; /姓名姓名 int age; /年龄年龄 float weight; /体重体重 /*吃饭的方法吃饭的方法*/ void dining() System.out.println(吃饱了吃饱了.); weight+; /*走路的方法走路的方法*/ void walk

10、() System.out.println(走累了走累了.); weight-; 成员变量成员变量成员函数成员函数http:/中国十大品牌IT教育机构定义类的语法class 类名类名 成员列表成员列表/包括成员变量和成员函数包括成员变量和成员函数在在Java中定义类中定义类struct 结构体名结构体名 成员列表成员列表/只有成员变量,没有成员只有成员变量,没有成员函数函数;在在C中定义结构体中定义结构体习惯上,类名的首字母大写,如:习惯上,类名的首字母大写,如:Studenthttp:/中国十大品牌IT教育机构在Java中创建对象/*Test类,用来容纳类,用来容纳main方法方法*/pub

11、lic class Test /*main方法,程序入口方法,程序入口*/ public static void main(String args) Student std; /声明声明Student类型的引用类型的引用 std = new Student(); /创建创建Student类型的对象类型的对象 = 张三张三; /为姓名赋值为姓名赋值 std.age = 18; /为年龄赋值为年龄赋值 std.weight = 50; /为体重赋值为体重赋值 std.dining(); /调用成员方法调用成员方法 System.out.println(std.weight); s

12、td.walk(); System.out.println(std.weight); http:/中国十大品牌IT教育机构创建对象的语法和数组相似,对象也是引用数据类型,只能使用new运算符从堆中分配内存;创建对象的一般语法:类名 引用名 = new 类名();使用已经定义好的类,创建该类对象的过程称为“实例化”。注意:这里要有括号注意:这里要有括号http:/中国十大品牌IT教育机构成员运算符.在C语言中,必须要先声明结构体变量,才可以访问结构体中的成员;同样的,只有先实例化类的对象,才可以访问到类中的成员(属性和方法);使用成员运算符(.)来访问成员属性或成员方法;一般语法是:对象名.成员

13、名如:std.age = 18; /为成员属性赋值 std.dining(); /调用成员方法http:/中国十大品牌IT教育机构访问权限:public和privateC语言中结构体的成员可以从任何地方进行访问,这将给数据的安全留下极大的隐患;为了避免从类外部直接访问类成员而造成的数据损坏,Java对类成员的访问制定了约束;关键字public和private是访问修饰符,用来说明某个成员是否可以从类外部进行访问;public修饰的成员可以在任何地方进行访问,不受任何约束;private修饰的成员只能够被本类中的其它成员访问,而不能从类的外部进行访问。http:/中国十大品牌IT教育机构访问权限

14、无法从类的外部访问私有成员;其它类的私有成员对于当前类也是隐藏的。可以从类可以从类外部访问外部访问类类属性或方法属性或方法私有私有属性或方法属性或方法公有公有不可从类不可从类外部访问外部访问http:/中国十大品牌IT教育机构访问权限示例class Student private String name; /姓名,私有的,不可以从类外部直接访问姓名,私有的,不可以从类外部直接访问 private int age; /年龄,私有的,不可以从类外部直接访问年龄,私有的,不可以从类外部直接访问 private float weight; /体重,私有的,不可以从类外部直接访问体重,私有的,不可以从类

15、外部直接访问 /吃饭的方法,公有的,可以从任何地方访问吃饭的方法,公有的,可以从任何地方访问 public void dining() System.out.println(吃饱了吃饱了.); weight+; /dining方法是类内部成员,可以直接访问本类私有成员方法是类内部成员,可以直接访问本类私有成员 /走路的方法,公有的,可以从任何地方访问走路的方法,公有的,可以从任何地方访问 public void walk() System.out.println(走累了走累了.); weight-; /walk方法是类内部成员,可以直接访问本类私有成员方法是类内部成员,可以直接访问本类私有成员

16、 public class Test public static void main(String args) Student std = new Student(); /实例化一个实例化一个Student对象对象 std.age = 18; /试图从类外部访问私有成员,将会报出一个错误试图从类外部访问私有成员,将会报出一个错误 std.dining(); /允许访问公有成员允许访问公有成员 http:/中国十大品牌IT教育机构访问权限(续)加上访问修饰符有时候可能会给操作数据带来不便,但可以在很大程度上保证数据的安全一般地,我们会将成员属性声明为private,而将成员方法声明为public

17、,但这样做并不是绝对的有时候,类外部可能要操作到某些私有数据成员,那么就可以增加一个公有的方法,再由这个方法来操作私有数据,避免因类外部的误操作而造成的数据损坏因为main方法要由类外部的虚拟机来调用,所以main方法必须声明成publichttp:/中国十大品牌IT教育机构修改Student类class Student /定义学生类定义学生类 private String name; /姓名,私有姓名,私有 private int age; /年龄,私有年龄,私有 private float weight; /体重,私有体重,私有 public void setName(String n)

18、/为姓名赋值的方法,公有为姓名赋值的方法,公有 name = n; public void setAge(int a) /为年龄赋值的方法,公有为年龄赋值的方法,公有 age = a; public void setWeight(float w) /为体重赋值的方法,公有为体重赋值的方法,公有 weight = w; public void display() /将所有信息打印出来的方法,公有将所有信息打印出来的方法,公有 System.out.println(姓名:姓名: + name + ,年龄:年龄: + age + ,体重:体重: + weight); public void dini

19、ng() /吃饭的方法,公有,代码略吃饭的方法,公有,代码略 public void walk() /走路的方法,公有,代码略走路的方法,公有,代码略public class Test public static void main(String args) Student std = new Student(); /实例化学生类对象实例化学生类对象 std.setName(张三张三); /为姓名赋值为姓名赋值 std.setAge(18); /为年龄赋值为年龄赋值 std.setWeight(55); /为体重赋值为体重赋值 std.dining(); /调用吃饭的方法调用吃饭的方法 std

20、.display(); /将信息打印出来将信息打印出来 http:/中国十大品牌IT教育机构对象初始化在上例中,只能逐个地为数据成员赋值,如果想在对象实例化的同时就初始化成员属性,就使用到了构造方法;构造方法是特殊的成员方法,它与类同名,在对象实例化时由虚拟机自动调用;请注意:构造方法没有返回值类型,也不能有返回值。http:/中国十大品牌IT教育机构构造方法示例/*定义定义ConstructorDemo类,对构造方法进行测试类,对构造方法进行测试*/class ConstructorDemo /*构造方法,方法名与类名完全一致构造方法,方法名与类名完全一致 无需指定返回值类型,也不能有返回值

21、无需指定返回值类型,也不能有返回值*/ public ConstructorDemo() System.out.println(这是构造方法这是构造方法); /*Test类,用来容纳类,用来容纳main方法方法一般将包含有一般将包含有main方法的类声明为方法的类声明为public*/public class Test /*main方法,程序入口方法,程序入口*/ public static void main(String args) /*实例化实例化ConstructorDemo类的对象类的对象*/ ConstructorDemo cd = new ConstructorDemo(); h

22、ttp:/中国十大品牌IT教育机构构造方法正是由于在实例化对象的同时会自动调用构造方法,所以构造方法一般用来给数据成员分配资源或初始化数据成员;构造方法的一般形式:访问权限 类名(形参列表) 方法体 因为是由虚拟机来调用构造方法,所以构造方法一般应定义成public。http:/中国十大品牌IT教育机构为Student类添加构造方法class Student /定义学生类定义学生类 private String name; /姓名,私有姓名,私有 private int age; /年龄,私有年龄,私有 private float weight; /体重,私有体重,私有 /构造方法,根据传递进来的参数,为数据成员赋值构造方法,根据传递进来的参数,为数据成员赋值 public Student(String n, int a, float w) /分别为每个数据成员赋初始值分别为每个数据成员赋初始值 name = n; age = a; weight = w; public void setName(String n) /为姓名赋值的方法,公有,代码略为姓名赋值的方法,公有,代码略 public void setAge(int a)

温馨提示

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

评论

0/150

提交评论