Java与面向对象技术(09级).ppt
《Java与面向对象技术(09级).ppt》由会员分享,可在线阅读,更多相关《Java与面向对象技术(09级).ppt(146页珍藏版)》请在三一办公上搜索。
1、Java与面向对象技术,类的定义与对象的创建构造方法的作用及应用面向对象三大特征的实现抽象类与接口的应用包的创建与使用访问控制符的应用,重点及难点,构造方法的作用及应用面向对象三大特征:封装性、继承性和多态性的Java语言实现抽象类与接口的应用异常处理,2.2 对象的基本概念,变量,方法,客观世界的实体,程序中对象,对象具有两方面的含义(考虑从哪些方面描述对象),类的基本概念,类是抽象的,对象是具体的,具有相同特征和行为的对象被抽象为类。类是对象的模板,包括一个对象的所有数据和代码。,类的示例,形状类,动物类,汽车类,对象,“对象是存在的具体实体,具有明确定义的状态和行为。”,对象的示例,收银
2、员对象,顾客对象,顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品,状态,姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单,行为,消息传递,“消息指一个对象为执行某项特定操作而向另一个对象发送的请求”,类和对象的示例,雇员,收银员,系统管理员,仓库管理员,面向对象技术的实现,对象、类和实体的关系,类是创建对象的模板,对象是类的实例,类的基本概念,class Car int color;int name;int speed;void brake()void speedUp()void slowDown(),类定义,类的修饰符:public|friendly abstrac
3、t final缺省方式为 friendly|package,格式:修饰符 class 类名 extends 父类名 implements 接口名表 成员变量声明 成员方法声明,其中class、extends和implements都是Java的关键字。,声明成员变量,声明成员变量格式为:;,public class Date1/类声明 int year,month,day;/成员变量,public|protected|private static final transient volatile 缺省为:friendly|package,public class Date1 int year,m
4、onth,day;void print()System.out.println(date is+year+-+month+-+day);,声明成员方法,类的行为由其方法实现,其他对象可以调用对象的方法来得到该对象的服务。类中需要定义成员方法的声明和实现。,()throws,方法修饰符为:public|protected|private static final|abstract native synchronized缺省为:friendly|package,方法的返回值 return 表达式;return;,public class Date1 int year,month,day;boole
5、an isleapyear()/判断年份是否为闰年 boolean lean;lean=(year%400=0)|(year%100!=0),例:声明日期类,public class Date1 int year,month,day;void setdate(int y,int m,int d)/设置日期值 year=y;month=m;day=d;boolean isleapyear()/判断年份是否为闰年 boolean lean;lean=(year%400=0)|(year%100!=0),定义一个名为Rectangle表示长方形的类,它包含double类型的长length和宽widt
6、h两个数据成员和设置长方形长宽值的方法setDim()、计算长方形面积的方法area()。,类的实现,练 习 题,定义Student类如下:1.属性包括:学号,出生年份,数学成绩,英语成绩和计算机成绩。2.方法包括:1)设置初值。2)sum方法(计算并输出总成绩)2)age方法(计算年龄),变量的作用范围,Java允许在任何一个程序块中声明变量,该变量的作用范围就是声明该变量的程序块,在作用域之外,不能访问该变量。方法体中声明的局部变量的作用域在该方法内部。不是类的成员变量。,class Abc int a,b,c,x=5;void f()int x=10;System.out.println
7、(“x=+x);,x为局部变量,作用域在方法f内,若局部变量与类的成员变量同名,则类的成员变量被隐藏。,方法和变量的作用域,在Java语言中,方法与变量的作用域,根据定义的位置不同,作用域也不全相同。当一个方法使用某个变量时,以如下的顺序查找变量:,public class Date1 int year,month,day;void setdate(int y,int m,int d)/设置日期值 year=y;month=m;day=d;boolean isleapyear()/判断年份是否为闰年 boolean lean;lean=(year%400=0)|(year%100!=0),例:
8、声明日期类,public class Date1 int year,month,day;void setdate(int y,int m,int d)year=y;month=m;day=d;boolean isleapyear()return(year%400=0)|(year%100!=0),int year,month,day;,对象的声明与创建,Car demoCar;,声明对象,实例化对象,声明对象的同时实例化对象,类名 对象名;,对象名=new 类名(),运算符new为对象分配内存空间,它调用对象的构造方法,返回引用,类名 对象名=new 类名(),0XA058,demoCar=n
9、ew Car();,对象的声明与创建,创建对象,int i;,Date1 a;,a=new Date1();,成员变量初始化,当类中的某个成员变量属于基本数据类型时,即使没有为它提供初值,Java也保证它有一个初始值。,public class Date1 int year,month,day;,另外执行构造方法,可进行初始化,对象的使用,访问对象成员的一般形式为:对象名.成员变量名 对象名.成员方法名(),运算符”.”在这里称为成员运算符,对象的使用,引用成员变量.a.year=2006;,public class Date1 int year,month,day;void setdate(
10、int y,int m,int d)year=y;month=m;day=d;,Date1 a=new Date1();,2006,a.month=3;a.day=6;a.day+;,3,6,7,参数传递值传递,void setdate(int y,int m,int d)year=y;month=m;day=d;,a.setdate(2006,3,6),调用成员方法,格式:.(),2006,3,6,例:声明日期类,public class Date1 int year,month,day;void setdate(int y,int m,int d)year=y;month=m;day=d;
11、boolean isleapyear()return(year%400=0)|(year%100!=0),对象的构造和初始化,在用new生成对象实例时:new(参数表);系统自动初始化所有变量,步骤为:分配新对象的空间,并进行默认的初始化执行显式的成员初始化 执行构造方法,默认的初始化,实例化对象时,系统会对成员变量进行默认的初始化。,显式成员初始化,例如:在Date1类的定义中,若有:class Date1 int year=2011;,则实例化a时:Date1 a=new Date1();a.year的值被初始化为2011。,构造方法,在Java中,任何变量在被使用前都必须先设置初值。Ja
12、va提供了为类的成员变量赋初值的专门功能:构造方法。,作用:对成员变量进行初始化。构造方法的名字必须与类名相同。构造方法没有返回值,并且没有void修饰符。在实例化对象的时候由new运算符自动调用。,对象名=new 类名(参数表);,构造方法,例:使用构造方法为日期赋初值,public class Date2 int year,month,day;Date2(int y,int m,int d)year=y;month=m;day=d;void print()System.out.println(date is+year+-+month+-+day);,class Date2_ex publi
13、c static void main(String args)Date2 a=new Date2(2006,3,6);a.print();,void setdate(int y,int m,int d)year=y;month=m;day=d;,Date2 a=new Date2();a.setdate(2006,3,6);,一个类中可以有多个具有不同参数列表的构造方法。若一个类没有构造方法,系统会自动为类生成一个 默认的构造方法,其参数列表及方法体均为空。Date2()如果程序员在类中定义了一个以上的构造方法,则 自动屏蔽掉默认的构造方法。程序员定义的构造方法中,最好包括一个参数表为 空的构
14、造方法,否则在调用new Xxxx()时会出错。构造方法不能继承。,构 造 方 法的说明,注意:一旦我们自己定义了构造方法,系统将不再为我们提供默认的不带参数的构造方法。,public class Date2 int year,month,day;Date2(int y,int m,int d)year=y;month=m;day=d;Date2(int y,int m)year=y;month=m;Date2(int y)year=y;,public static void main(String args)Date2 a=new Date2(2006,3,6);Date2 b=new Da
15、te2(2006,3);,public class Date2 int year,month,day;Date2(int y,int m,int d)year=y;month=m;day=d;Date2(int y,int m)year=y;month=m;Date2(int y)year=y;Date2()public static void main(String args)Date2 a=new Date2(2006,3,6);Date2 a=new Date2(2006,3);Date2 a=new Date2();,为Date2类添加一个构造方法,要求能够对所赋初值进行检验:月份在1
16、12之间,日期在131之间。,public class Date2 int year,month,day;Date2(int y,int m,int d)year=y;month=(m=1),class PersonString name;int age;String sex;public Person(String s1)name=s1;public Person(String s1,int x)name=s1;age=x;,任务二实现,public Person(String s1,int x,String s2)name=s1;age=x;sex=s2;public void eat()
17、System.out.println(Its delicious!);,class TestPersonpublic static void main(String args)Person p1=new Person(Tom);Person p2=new Person(John,20);Person p3=new Person(Bob,22,male);System.out.println(p1.name+p1.age+p1.sex);System.out.println(p2.name+p2.age+p2.sex);System.out.println(p3.name+p3.age+p3.s
18、ex);,通过构造方法赋初值,对象的销毁,Java的垃圾回收机制自动判断对象是否在使用,并能够自动销毁不再使用的对象,收回对象所占的资源。程序中也可以使用析构方法finalize()随时销毁一个对象,将资源还给系统。,对象的销毁,finalize方法,没有参数,也不返回值。一个类只能有一个finalize()。,finalize方法的说明方式如下:protected void finalize()throws Throwable,protected void finalize()System.out.println(“have been collected”),2.4.1 类的封装,封装(en
19、capsulation):类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。封装的目的隐藏类的实现细节;迫使用户通过接口去访问数据;增强代码的可维护性。,如何封装,1.访问权限 2.设置类的访问权限 3.设置类成员的访问权限,包,包(package)是Java提供的一种区别类名字空间的机制,是类的组织方式。包对应一个文件夹,包中可以再有包,称为包等级。同一个包中的类名不可以重复,不同包中的类名可以相同。有助于避免命名冲突。,包,Java中预定义了许多包,常用的有:java.lang语言包,提供Object、String等基
20、础类java.util实用包,提供日期类等实用类java.awt抽象窗口工具包java.text文本包java.io输入输出流的文件包java.applet Applet应用程序包网络功能包,创建包,package 包名1.包名2.,语法格式如下:,注意:在Java程序中,package语句必须是程序的第一条非空格、非注释语句。,创建包举例,package mypackage.personmanage;public class Person public String name;public int age;public void getInfo()System.out.println(nam
21、e);System.out.println(age);public void eat()System.out.println(Its delicious!);,package mypackage.personmanage;这条语句指定这个包中的文件存储在目录 path/mypackage/personmanage下。包层次的根目录path是由环境变量CLASSPATH来确定的。,导入包,1、使用import语句 import 包名.标识符;import 包名.*;import java.util.Date;import java.util.*;Date day=new Date();,2、直接
22、使用包 java.util.Date day=new java.util.Date();mypackage.personmanage.Person p=new mypackage.personmanage.Person();,导入包举例,package yourpackage;import mypackage.Person;class Student extends Person String school;public void study()System.out.println(Studding);public static void main(String args)Student s=
23、new Student();s.name=John;s.age=19;s.school=“华北电力大学;s.getInfo();s.study();,访问权限,权限修饰符允许的访问级别,设置类的访问权限,可以用public将类设置为公有的。公有类可以被其他类所访问和引用。在一个源程序中,public类只能有一个。可以不用权限修饰符。(包访问性)只能被同一个包中的类访问和引用。不允许使用public以外的权限修饰符。,public class Date1/公有的类class Date1/非公有的类private class Date2,3.设置类中成员的访问权限,类中的成员,包括成员变量成员方法
24、声明类中的成员时,可以用权限修饰符来限制其他类的对象访问该成员。,public class Date1 int year,month,day;void setdate(int y,int m,int d)year=y;month=m;day=d;,private int year,month,day;public void setdate(),public protected 无(friendly)private,设置类中成员的访问权限,公有的,说明该类成员可被所有类的对象使用。,保护的,说明该类成员能被同一类中的其他成员、或其子类成员、或同一包中的其他类访问。,默认的,说明该类成员能被同一类
25、中的其他成员、或同一包中的其他类访问。,私有的,该类成员只能被同一类中的其他成员访问。,类中成员的访问修饰符,public class Date3 private int year,month,day;public Date3(int y,int m,int d)year=y;month=(m=1),class Date3_ex public static void main(String args)Date3 a=new Date3(2006,3,10);System.out.println(a.year);,public class Date3 private int year,month
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 技术 09
链接地址:https://www.31ppt.com/p-6509618.html