Java程序设计课件2第二章 类和对象.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java程序设计课件2第二章 类和对象.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java程序设计课件2第二章 类和对象 Java 程序设计 课件 第二 对象
- 资源描述:
-
1、Java程序设计课程1、面向对象程序设计的基本概念;2、类和对象;3、类的继承和多态。Java程序设计课程 学习目标了解面向对象程序设计方法的特征和作用;掌握定义类和产生对象的方法;掌握类中不同成员的作用;了解继承的概念和用法;掌握用方法的重写实现多态。Java程序设计课程 2.1类和对象2.1.1 项目描述设计一个动态整型数组类,可以实现添加、插入、删除,显示功能。2.1.2 项目知识准备(1)面向过程和面向对象面向过程是以过程为中心的编程方法,主要特点是:认为一个系统应该划分为数据和功能,并且数据和加工数据的功能是分离的;分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,然后依
2、次调用,面向过程最重要的是模块化的设计方法。面向对象是以对象(实体)为中心的编程方法,主要特点是:研究客观存在的事物特征,运用人类的自然思维方式(如抽象、分类)来构造软件系统;将数据和功能有机结合起来,把数据和相关操作合成为一个整体,隐藏处理细节,并对外显露一些对话接口,来实现对象之间的联系;采用继承的方式,让对象具有可扩展性。(2)类的定义抽取同类实体的共同性,自定义出一种包括数据和相关操作的模型,称之为类。例如,我们可以抽象出公司员工的共同特征和行为,构建一个模型:员工的特征:姓名、性别、年龄员工的行为:工作、休息、介绍自己根据员工的特征和行为,可以定义员工类别:Java程序设计课程 2.
3、1类和对象案例2-1:员工类的定义public class Employee /员工类 /类成员定义public String name;/员工姓名(数据成员)public String sex;/员工性别(数据成员)public int age;/员工年龄(数据成员)public void work()/工作(方法成员)System.out.println(name+在工作。);public void rest()/休息(方法成员)System.out.println(name+在休息。);public void introduce()/介绍自己(方法成员)System.out.printl
4、n(我叫+name+,+sex+,+age+岁);Java程序设计课程 2.1类和对象3)创建对象根据类这个模型,可以创建多个实体,也称为对象(object),类是客观事物的抽象和概括,对象是客观事物的具体实现。下面的程序创建了两个员工,并执行相关动作:案例2-2:创建员工对象import cn.cqvie.chapter02.exam1.Employee;class Testpublic static void main(String args)Employee emp1,emp2;/定义对象指针(定义时为空指针)emp1=new Employee();/用new关键字创建Employee对
5、象,并将指针指向对象emp2=new Employee();/用new关键字创建Employee对象,并将指针指向对象 emp1.name=马腾云;emp1.sex=男;emp1.age=30;/给员工1的属性赋值 emp2.name=范小冰;emp2.sex=女;emp2.age=28;/给员工2的属性赋值 emp1.work();/调用对象emp1的work方法 emp1.rest();/调用对象emp1的rest方法 emp1.introduce();/调用对象emp1的introduce方法 emp2.introduce();/调用对象emp2的introduce方法Java程序设计课
6、程 2.1类和对象(4)构造方法构造方法也叫构造函数、构造器(Constructor),用来创建类的实例化对象,可以完成创建对象时的初始化工作。构造方法具有如下特点:与类的名称相同函数定义时不含返回值类型,不能在方法中用return语句返回值访问权限一般为public案例2-3:使用构造方法package cn.cqvie.chapter02.exam3;class Employee /员工类public String name;/员工姓名(数据成员)public String sex;/员工性别(数据成员)public int age;/员工年龄(数据成员)public Employee(S
7、tring name,String sex,int age)/构造方法(3个参数)this.name=name;this.sex=sex;this.age=age;/属性设置为传人的参数值public Employee()/构造方法(无参数)this(无名氏,男,18);/通过this关键字调用另一个构造函数,将属性设置为默认值Java程序设计课程 2.1类和对象public void work()/工作(方法成员)System.out.println(name+在工作。);public void rest()/休息(方法成员)System.out.println(name+在休息。);pub
8、lic void introduce()/介绍自己(方法成员)System.out.println(我叫+name+,+sex+,+age+岁);public class Testpublic static void main(String args)Employee emp1,emp2;/定义对象指针(定义时为空指针)emp1=new Employee();/调用无参数构造方法创建对象emp2=new Employee(马腾云,男,30);/调用含3个参数的构造方法创建对象 emp1.introduce();/调用对象emp1的introduce方法 emp2.introduce();/调用
9、对象emp2的introduce方法Java程序设计课程 2.1类和对象(5)静态成员静态成员用static关键字进行修饰,表示“静态”或者“全局”的意思,可以用来修饰成员变量和成员方法,也可以形成静态static代码块。被static修饰的成员独立于任何对象,能被该类的所有对象共享。静态数据成员在程序运行期间一直存在,不会因为对象的消亡而被释放。静态方法中只能访问静态成员,不能访问非静态成员,也不能使用this、super等关键字。下面的代码用静态成员实现单例模式,确保该类只能产生唯一的对象:public class Singleton private Singleton()/构造方法设置为
10、私有,禁止用new产生对象 private static Singleton single=null;/静态工厂方法(必须调用该方法获得对象)/调用格式:Singleton.getInstance();public static Singleton getInstance()if(single=null)/确保对象只生成一次 single=new Singleton();return single;Java程序设计课程 2.1类和对象(5)用包来管理类在一个比较大的程序中,类的名字可能会冲突,包就像文件夹一样,将同名的类装到不同的包中,可以避免冲突。申明包申明包的格式是:package 包名;
11、Java SE中自带的包命名通常以java开头,一些扩展包命名以javax开头。自己定义的包,通常用公司域名的倒写加上项目名作为包名,比如公司域名为,开发的项目为project1,则包名为com.abc.project1。引用包对包的引用需要import关键字,格式是:“import 包名.类名;”。如果要引用包中的所有类,格式是:“import 包名.*;”。默认情况下,java.lang包中的类自动引入,无需用import语句显式引入。例如,A类属于项目project1,B类属于项目projrct2,B类要引用A类,则程序为:Java程序设计课程 2.1类和对象/A.javapackage
12、 com.abc.project1;/该类所属的包public class A /B.javapackage com.abc.project2;/该类所属的包import com.abc.project1;/引用的包public class Bpublic static void main(String args)A obj=new A();/使用A类Java程序设计课程 2.1类和对象2.1.3 项目实施(1)功能分析列表类要实现一组整型数据的存储,并记住实际存入的整数个数,因此需要定义的数据成员包括一个整型数组arr和实际长度length。列表要具备的添加、插入、删除、显示功能,通过定义相
13、应的方法来实现。(2)编码通过分析我们可以编写以下代码实现功能:class MyList/列表类private int a;/存放数据的数组private int length;/数组实际长度 public MyList()/构造函数a=new int100;length=0;public void add(int x)/在列表末尾添加元素xalength=x;length+;Java程序设计课程 2.1类和对象public void insert(int n,int x)/在第n个位置前面插入元素x(n从0开始)if(nlength)n=length;for(int i=length-1;i
14、=n;i-)ai+1=ai;an=x;length+;/添加后长度加1public void delete(int n)/删除第n个元素(n从0开始)if(nlength-1)return;for(int i=n;i=length-2;i+)ai=ai+1;length-;/删除后长度减1public int get(int n)/获取第n个元素值 return an;public int getLength()/获取列表长度Java程序设计课程 2.1类和对象return length;public void show()for(int i=0;ilength;i+)System.out.p
15、rint(ai+);System.out.println();public class Testpublic static void main(String args)MyList list=new MyList();list.add(10);list.add(20);list.add(30);list.show();list.insert(2,75);list.show();list.delete(1);list.show();Java程序设计课程 2.1类和对象(3)调试运行,显示结果该程序的运行结果如图2.1所示:Java程序设计课程 2.1类和对象2.1.4能力拓展(1)选择题下列哪个
16、类声明是正确的()A、public void Hi B、public class Move()C、public class void number D、public class Car下面的方法声明中,哪个是正确的()A、public class methodName()B、public void int methodName()C、public void methodName()D、public void methodName下面对构造方法的描述不正确是()。A、系统提供默认的构造方法 B、构造方法可以有参数,也可以有返回值C、构造方法可以重载D、构造方法可以设置参数设 A为已定义的类名,下
17、列声明A类的对象a的语句中正确的是()。A、float A a;B、public A a=A();C、A a=new int();D、A a=new A();Java程序设计课程 2.1类和对象关键字()表示一个类定义的开始。A、declare B、new C、class D、以上答案都不对(2)填空题在Java程序中定义的类中包括有两种成员,分别是:、。是Java语言中定义类时必须使用的关键字。是抽象的,而 是具体的。定义在类中方法之外的变量称为 。下面是一个类的定义,请将其补充完整。class private String name;private int age;public Stude
18、nt(s,int i)name=s;age=i;Java程序设计课程 2.1类和对象 (3)编程题设计一个长方形类,成员变量包括长和宽。类中有计算面积和周长的方法,并有相应的setter方法和getter方法设置和获得长和宽,并编写测试类进行功能测试。改进列表类,增加一个构造方法,可以设置数组的最大长度,并增加查找、排序、逆序功能。Java程序设计课程 2.2封装、继承和多态2.2.1 项目描述设计一个员工工资管理程序,用计算公司不同类型员工的工资,并打印出收入清单。2.2.2 项目知识准备(1)面向对象设计的封装性封装是把类设计成一个黑匣子,将将里面包含的某些数据和操作隐藏起来,对外公开特定
19、的操作接口函数进行访问,这样可以避免外部对内部的干扰。对类成员的访问权限包括:公有(public)、私有(private)、保护(protected)、默认。公有(public)用public修饰的类成员(包括变量和方法)称为公有的,公有成员允许应用程序中所有的方法访问,不仅允许类内部的方法访问,也允许同一个包或不同包中的类方法访问。这里的访问指存取公有数据,调用公有方法。Java程序设计课程 2.2封装、继承和多态案例2-4:公有成员的可访问性class MyClasspublic int x;/公有变量 public void setX(int i)/公有方法 x=i;public voi
20、d showX()/公有方法System.out.println(调用showX,x=+x);public class Testpublic static void main(String args)MyClass obj=new MyClass();obj.setX(20);/调用类的公有方法给公有变量赋值 obj.showX();/调用类的公有方法显示公有变量的值 obj.x=100;/直接给obj对象的公有变量赋值 System.out.println(直接输出x=+obj.x);/直接输出公有变量的值Java程序设计课程 2.2封装、继承和多态私有(private)用private修饰
21、的类成员称为私有的,类的私有成员只能被这个类的方法直接访问,而不能被类以外的方法访问。一般把不需要外界知道的数据或操作定义为私有成员,这样既有利于数据的安全性,也符合隐藏内部信息处理细节的原则。在案例2-3中,如果将MyClass类的成员x定义为private,main方法中访问obj.x的代码会出错,但是MyClass类中的setX和showX方法允许访问私有成员x。案例2-5:隐藏数据成员public class Employee /Employee.java private String name;/姓名 private String sex;/性别 private int age;/年
22、龄 private float salary;/基本工资 public String getName()return name;public void setName(String name)this.name=name;Java程序设计课程 2.2封装、继承和多态public String getSex()return sex;public void setSex(String sex)this.sex=sex;public int getAge()return age;public void setAge(int age)this.age=age;public float getSalar
23、y()return salary;public void setSalary(float salary)this.salary=salary;Java程序设计课程 2.2封装、继承和多态public Employee()/构造方法(无参数)this(无名氏,男,18,2000);public Employee(String name,String sex,int age,float salary)/构造方法 this.name=name;this.sex=sex;this.age=age;this.salary=salary;提醒:上面所说的某个类可“访问”,是指在某个类的方法中,可以读写本类
24、或其它类的数据(变量)成员,或可以调用本类或其它类的方法(函数)成员,只有在类的方法中(函数体中),才能完成“访问”这个动作。Java程序设计课程 2.2封装、继承和多态类成员的可访问性总结如下:表2-1 类成员的可访问性 同一个类同一个包中的类其它包中的子类其它包中的类公有(public)保护(protected)默认私有(private)Java程序设计课程 2.2封装、继承和多态(2)面向对象设计的继承性继承就是以原有类为基础来创建一个新类,新类能传承原有类的数据和行为,并能扩充新的成员,从而达到代码复用的目的。在继承关系中原有的类称为父类(或基类),新的类称为子类(或派生类)。在Jav
25、a中只允许单重继承,一个父类可以有多个子类,但一个子类只能有一个父类,但支持多层继承,即子类还可以有子类。这样的继承关系就形成了继承树,如图2.1所示。Java程序设计课程 2.2封装、继承和多态定义继承关系的语法格式是:访问权限 class 类名 extends 父类名/(类体)如果没有extends子句,则该类默认继承自Object类。用final修饰的类不能被继承。子类继承父类之后,具有如下特点:继承到了父类所有的属性和方法,即父类将数据和方法成员传递给子类:案例2-6:类的继承和传递性class Employee /Employee.java private String name;/
展开阅读全文