一章类和对象.ppt
《一章类和对象.ppt》由会员分享,可在线阅读,更多相关《一章类和对象.ppt(114页珍藏版)》请在三一办公上搜索。
1、第 3 章 类和对象,雷擎对外经济贸易大学信息学院,content,3.1 面向对象程序设计的概念3.2 类和对象3.3 内部类3.4 对象的初始化和清除3.5 包 实验:类的定义和使用,3.1 面向对象程序设计的概念,面向对象的程序设计与结构化程序设计方法相比,更符合人类认识现实世界的思维方式 已成为程序设计的主流方向涉及的主要概念抽象封装继承多态,1.抽象,忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面计算机软件开发中所使用的抽象有数据抽象(数据和操作结合在一起)过程抽象(功能划分,隐藏具体实现细节),抽象例子1:学生选课,class Student int stid
2、;String stname;class Courseint coid;String coname;int total;int rest;Studentstudents;,抽象例子1:学生选课,学生数据(属性)int stid;String stname;方法(行为)void registerCourse();void unRegCourse();,抽象例子2:钟表,数据(属性)int hour;int minute;int second;方法(行为)void setTime();void showTime();,抽象例子3:灯,数据(属性)boolean status;方法(行为)void
3、on();void off();,2.封装,是一种信息隐蔽技术利用抽象数据类型将数据和基于数据的操作封装在一起用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象,封装的定义,清楚的边界所有对象的内部信息被限定在这个边界内接口对象向外界提供的方法,外界可以通过这些方法与对象进行交互受保护的内部实现功能的实现细节,不能从类外访问。,封装例子:钟表,private int hour;private minute;private second;public void setTime();
4、public showTime();,封装的意义,在面向对象的程序设计中,类封装了数据及对数据的操作,是程序中的最小模块禁止了外界直接操作类中的数据,模块与模块之间只能通过严格控制的接口进行交互,这使得模块之间的偶合度大大降低保证了模块具有较好的独立性,程序维护和修改较为容易,3.继承,是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的派生类(也称为子类)在继承过程中派生类继承了基类的特性,包括方法和实例变量,派生类也可修改继承的方法或增加新的方法,使之更适合特殊的需要有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量,4.多态,一个程序中同名的
5、不同方法共存主要通过子类对父类方法的覆盖来实现不同类的对象可以响应同名的消息(方法),具体的实现方法却不同使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序方法同名问题,2.1 面向对象的程序设计方法概述,面向对象程序设计,基本组成单位是类程序在运行时由类生成对象,对象是面向对象程序的核心对象之间通过发送消息进行通信,互相协作完成相应功能,对象,现实世界中万物皆对象都具有各自的属性,对外界都呈现各自的行为 程序中一切都是对象都具有标识(identity),属性和行为(方法)通过一个或多个变量来保存其状态通过方法(method)实现他的行为,类,将属性及行为相同或相似的对象归为
6、一类类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为在面向对象的程序设计中,每一个对象都属于某个特定的类,Java中类与对象的关系,类是一种复合数据类型,是Java程序的基本组成要素,描述了一类对象的状态和行为,其基本成分包括:成员变量成员方法类相当于程序中数据类型,对象是一个具体的变量。,BACK,3.2 类和对象,3.2.1 类的定义3.2.2 对象的创建与使用3.2.3 类成员变量3.2.4 类成员方法3.2.5 静态代码块3.2.6 访问控制,BACK,3.2.1 类的定义,定义形式public abstract|final class 类名称 extends 父类名称 i
7、mplements 接口名称列表 变量成员声明及初始化;方法声明及方法体;,最简单的类,class Lightclass Circle,BACK,3.2.2 对象的创建与使用,变量和对象变量除了存储基本数据类型的数据,还能存储对象的引用,用来存储对象引用的变量称为引用变量类的对象也称为类的实例,创建对象,创建对象的两个步骤声明对象名分配内存空间,对象的声明,格式类名称 变量名称 例如Circle是已经声明的类名,则下面语句声明的变量acircle将用于存储该类对象的引用:Circle aCircle;声明一个引用变量时并没有对象生成,分配内存空间,生成实例的格式:new()例如:aCircle
8、=new Circle()其作用是:在内存中为此对象分配内存空间返回对象的引用(reference,相当于对象的存储地址)变量可以被赋以空值例如:aCircle=null;,类的使用,格式:对象名.成员成员包括成员方法和成员变量例:int x=Integer.MAX;System.out.println(String s);,BACK,3.2.3 类成员变量,声明格式public|protected|private staticfinaltransient volatile变量数据类型变量名1=变量初值,变量名2=变量初值,;,类成员变量的分类,类成员变量分为两类:实例变量声明时没有stati
9、c修饰类变量(静态变量)声明时用static修饰,实例变量,变量声明中没有static修饰。变量所指向的对象必须有创建的步骤,如果所属的对象没有被创建,对象就不存在。所有对象都是实例成员变量。引用格式:对象名.实例变量,类的实例变量成员的定义,class Lightboolean status=false;/数据类型 变量名初始化值class Circle int radius=0;,类变量(静态变量),声明时需加static修饰符不管类的对象有多少,类变量只存在一份,在整个类中只有一个值类初始化的同时就被赋值适用情况类中所有对象都相同的属性经常需要共享的数据系统中用到的一些常量值引用格式.,
10、类变量(静态变量)例子,class Circle static double PI=3.1415926535 int radius=0;,Java的类成员变量定义练习1,用一个类来描述三维空间中的球类名:Ball成员变量:球心坐标 x球心坐标 y球心坐标 z半径 radius颜色color定义一个测试类BallTester,说明两个Ball类型的变量b1、b2,分别给他们的成员变量赋值,并打印出他们的半径。,Java的类成员变量定义练习2,用一个类来定义银行帐号类名:BankAccount成员变量姓名(ownerName)帐号(accountNumber)余额(balance)利率(rate)
11、/静态变量定义一个测试类BankAccountTester,说明两个BankAccount类的变量b1、b2,分别给他们的成员变量赋值,分别打印出两个变量的各成员变量,比较实例变量和静态变量的访问,在例1和例2的测试类中:分别在创建对象之前,使用类名来访问实例变量和静态变量,如BallTester.color等分别在创建对象之后,使用类名来访问实例变量和静态变量,如BallTester.color等比较结果,观察现象,BACK,3.2.4 类成员方法,成员方法定义类的行为一个对象能够做的事情我们能够从一个对象取得的信息类里可以不定义成员方法,也可以定义多个;一旦在类中声明了方法,它就成为了类声
12、明的一部分成员方法分为实例方法和类方法,方法成员声明,声明格式public|protected|private static final abstract nativesynchronized返回类型 方法名(参数列表)throws exceptionList方法体,类成员方法的分类,类成员方法分为两类:实例方法声明时没有static修饰类方法(静态方法)声明时用static修饰,实例方法,方法声明中没有static修饰。实例方法表示特定对象的行为。在使用实例方法之前,必须实例化类,即必须创建引用变量指向的对象,通过对象来引用。如果对象没有被创建,则方法就不能调用。引用格式:对象名.实例方法,
13、常用的实例方法,set方法和get方法set()是给属性赋值的方法,get()是取得属性值的方法。在java程序中成员属性一般用private限制访问,不允许直接属性直接操作,只能通过set()和get()访问,使得java程序具有很好的封装性和安全性。,例:set方法的定义,public class Circledouble r=0;/成员变量String color=“white”;/成员变量public void setR(double num)r=num;/给r赋值为参数num的值public void setColor(String str)color=str;/给color赋值为参
14、数str的值,例:set方法的引用,public class CircleTesterpublic static void main(String str)Circle c1,c2;c1=new Circle();/创建对象c1.setR(3);c1.setColor(“red”);c2=new Circle();/创建对象c2.setR(5);c1.setColor(“blue”);,例:get方法的定义,public class Circleprivate double r=0;/成员变量private String color=“white”;/成员变量public double get
15、R()return r;/返回属性r的值public String getColor()return color;/返回color的值,例:get方法的引用,public class CircleTesterpublic static void main(String str)Circle c1,c2;c1=new Circle();/创建对象c1.setR(3);c1.setColor(“red”);Sytem.out.println(c1.getR()+”半径的球颜色是”+c1.getColor();,常用的实例方法,toString方法toString是Object类定义的方法,返回的是
16、“类名hashcode”。可以重新定义,返回自己想要的信息。toString()方法的几点说明必须被声明为public返回类型为String方法的名称必须为toString,且没有参数,例:toString方法重定义,public class Circlepublic String toString()return“类名:Ball 球的半径:”+r+”颜色:”+color,例:toString方法的引用,public class CircleTesterpublic static void main(String str)Circle c1,c2;System.out.println(c1.t
17、oString);System.out.println(c2.toString);,Java的类成员方法定义练习1,类定义:类名:Ball成员变量:球心坐标 x,y,z半径 radius 颜色color成员方法:设置半径、获取半径值设置坐标 x,y,z 获取坐标 x,y,z 计算球体积 V在测试类BallTester中,设置b1的各属性变量,打印出b1的颜色和体积,Java的类成员方法定义练习2,类定义:类名:BankAccount成员变量:姓名(ownerName)帐号(accountNumber)余额(balance)成员方法:设置、获取帐号 getAccountNumber设置姓名set
18、Name 获取姓名getName获取余额getbalance 存款 deposit 取款 withdraw在测试类BankAccountTester中,设置b1的各属性变量,打印出b1的姓名和余额,类方法,也称为静态方法,表示类中对象的共有行为声明时前面需加static修饰符不能被声明为抽象的类方法可以在不建立对象的情况下用类名直接调用,也可用类实例调用,对在成员方法中对类成员的访问,static(静态变量/静态方法)class Test public void print(int x)System.out.println(x);public static void main(String a
19、rgs)int x=3;print(x);,D:javac Test.javaTest.java:9:non-static method print(int)cannot be referenced from a static context print(x);1 error,class Test public void print(int x)System.out.println(x);public static void main(String args)int x=3;Test t=new Test();t.print(x);,class Test public static void
20、print(int x)System.out.println(x);public static void main(String args)int x=3;print(x);,static方法中仅仅可以调用其他static方法,例:类方法(静态方法)的定义,public class Circlepublic static double PI=3.14;public static double getArea(double num)return PI*num*num;,例:类方法(静态方法)的引用,public class CircleTesterpublic static void main(
21、String str)Circle c1,c2;.double x1,x2;x1=Circle.getArea(1.23);/类引用c1=new Circle();x2=c1.getArea(c1.getR();/实例引用,类方法的应用,将摄氏温度(centigrade)转换成华氏温度(fahrenheit)转换公式为 fahrenheit=centigrade*9/5+32除了摄氏温度值及公式中需要的常量值,此功能不依赖于具体的类实例的属性值,因此可声明为类方法,例子:类方法的声明,转换方法centigradeToFahrenheit放在类Converter中public class Con
22、verter public static int centigradeToFahrenheit(int cent)return(cent*9/5+32);,Java的类方法练习,在Ball类中定义静态常量PI,定义类方法获取PI的值,BACK,3.2.5 静态代码块,在类中,可以将一块代码声明为静态,这样的程序块叫静态初始化段。格式static语句序列,静态代码块说明,静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面。静态代码块里面的变量都是局部变量,只在本块内有效。静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他的类。一个类中允许定义多个静态代码块,执行的顺序根
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一章类 对象

链接地址:https://www.31ppt.com/p-5634719.html