《《java类与对象》ppt课件》由会员分享,可在线阅读,更多相关《《java类与对象》ppt课件(78页珍藏版)》请在金锄头文库上搜索。
1、第三章,类与对象,2,目标,面向对象技术基础 类的概念、定义与使用 对象的生成、使用 static关键字 this关键字 final关键字 Java类中的限定词 包和import语句,3,面向对象编程,4,相关概念,5,对象,对象是客观存在的具体实体,具有明确定义的状态和行为。,6,对象的示例,收银员对象,顾客对象,顾客 姓名:朱丽叶 年龄:28 体重:52千克 操作: 购买商品,状态,姓名:布兰尼 职衔:收银员 年龄:35 体重:60千克 操作: 收款 打印帐单,行为,7,类,类是用于组合各个对象所共有操作和属性的一种机制,形状类,动物类,汽车类,类的示例,“类是具有相同属性和行为的一组对象
2、的集合”,8,类和对象的示例,收银员,系统管理员,仓库管理员,促销员,采购经理,9,属性,事物的特性,在类中表示为变量 每个对象的每个属性都拥有其特有的值 属性名称由类的所有实例共享,住址,姓名,属性,年龄,“在类中表示对象或实体拥有的特性时称为属性 ”,10,方法,“对象执行的操作称为方法。”,11,方法的示例,缝衣服的步骤,量尺寸,得到工具,缝衣服,方法,缝制衣服,裁缝,12,类和对象的区别,类是概念模型, 定义对象的所 有特性和所需 的操作,对象是真实的模型,类定义实体,对象是实际的实体,13,面向对象的基本特征,14,封装性,信息隐藏,隐藏对象的实现细节,不让用户看到 将东西包装在一起
3、,然后以新的完整形式呈现出来 例如,两种或多种化学药品组成一个胶囊 将方法和属性一起包装到一个单元中,单元以类的形式实现,“隐藏属性、方法或实现细节的过程称为封装。”,15,封装的示例 3-1,接口,采购经理,罗杰斯先生,法拉力公司,.,迪斯尼汽车公司,.,市场经理,雪莉女士,要求,16,封装的示例 3-2,有选择地提供数据,法拉力公司,迪斯尼汽车公司,17,封装的示例 3-3,实体法拉力公司,实体迪斯尼汽车公司,Auti Ltd,.,Buto Ltd,.,18,继承性,父 类,子类,19,多态性,父类,子类 - 绘制和移动三角形,子类 - 绘制和移动矩形,子类 - 绘制和移动五边形,子类,2
4、0,面向对象的Java实现,21,在 Java 中实现类,语法 class 其中, class 是创建类所使用的关键字, 是类的名称, 包含属性和方法的声明。,22,在 Java 中实现类,类的命名规则: 要符合标识符规则;不能为 Java 中的关键字 类名最好容易识别,多为英文单词组成,class Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(“有这本书“); ,23,成员变量
5、和局部变量,类体中的变量分为两部分。变量定义部分所定义的变量称为类的成员变量,在方法体中定义的变量和方法的参数被称为局部变量。 成员变量和局部变量的共同之处 成员变量和局部变量的类型都可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组类型、对象。 成员变量和局部变量的名字都必须符合标识符规定,名字如果使用拉丁字母,首写字母小写;如果多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。 成员变量和局部变量的区别:成员变量在整个类内都有效,局部变量只在定义它的方法内有效。,24,成员变量和局部变量,public class Benson int x =
6、100, y; void f() int x = 10; y = x; / 注意这里y得到的值为10,而不是100. ,注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,也就是说,这个成员变量在这个方法内暂时失效。,25,成员变量和局部变量,public class Employee int sideA, sideB, sideC; void setSide(int sideA, int sideB, int sideC) this.sideA = sideA; this.sideB = sideB; this.sideC = sideC; ,注:如果局部变量的名字与成员变量的名字
7、相同,则成员变量被隐藏,这时如果想在该方法内使用成员变量,必须使用关键字this。,26,类中的方法,方法的名称,参数列表,方法的主体,方法返回的对象类 型或原始类型,27,类中的方法,语法 ( , ,) 其中, 是方法返回值的数据类型 是用户自定义的方法名称 方法的参数列表是一组变量声明。 是方法的主体,28,类中的方法,不能为 Java 中的关键字,不能包含空格或点号“.”,可以下划线“_”、字母或“$”符号开头,方法的命名规则:,29,类中的方法,class Book String bookName; String authorName; int nopages; boolean ava
8、ilable; void isAvailable() if(available = true) System.out.println(“有这本书“); ,30,创建对象,定义类的最终目的是要使用这些类,创建并操纵某类的对象是使用该类的最主要手段。 创建对象的一般格式为: 类名 对象名 = new 类名(参数); 其中包含声明、实例化和初始化3个步骤,声明:类名 对象名 声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证
9、了安全性。,实例化 运算符new为对象分配内存空间,它调用对象的构造方法,返回引用。一个类的不同对象分别占据不同的内存空间。,生成 执行构造方法,进行初始化;根据参数不同调用相应的构造方法。,31,创建对象,class Student float height, weight; String head, ear, hand, foot, mouth; void speak(String s) System.out.println(s); class A public static void main(String args) Student ZhangSan; / 声明对象 / 为对象分配内存
10、,使用new 运算符和默认的构造方法 ZhangSan = new Student(); ,32,对象的使用,对象不仅可以改变自己变量的状态,而且还拥有使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。通过圆点符号“.”可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。,33,class Book String bookName; String authorName; int nopages; boolean available; Book(String bName,String aName,int Page,boolean a)
11、 bookName=bName; authorName=aName; nopages=Page; available=a; void isAvailable() if(available = true) System.out.println(“有这本书“); public class BookTest public static void main(String args) Book objBook = new Book(“a“,“b“,3,true); objBook.isAvailable(); System.out.println(objBook. bookName); ,34,clas
12、s Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(“有这本书“); public class BookTest public static void main(String args) Book objBook = new Book(); objBook.bookName=“a“; . objBook.isAvailable(); System.out.println(objBo
13、ok. bookName); ,35,练习,创建一个Date类,具有三个整型成员变量year,month,day,具有三个成员方法setDate,isLeapYear,print,其中setDate用来给成员变量赋值, isLeapYear用来判断当前年份是否为闰年, print用来输出当前日期值。 在主函数中创建Date类的对象,并调用三个成员函数实现赋日期值,输出日期值,并判断当前年份是否为闰年。,36,构造方法,每当创建给定类的实例时就调用的方法 与类同名,但没有返回类型 Java 为对象分配内存,初始化实例变量时调用构造方法 两种构造方法 参数化构造方法 隐式构造方法,37,隐式构造方
14、法的示例,class Sdate int month=11; int day=27; int year=1969; public static void main(String args ) Sdate S1; S1=new Sdate(); ,38,参数化构造方法的示例,class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 “ + m + “/“ + d + “/“ + y + “.“); public static
15、void main(String args) Sdate S1,S2; S1=new Sdate(11,27,1969); S2=new Sdate(3,3,1973); ,日期是 11/27/1969. 日期是 3/3/1973.,39,参数化构造方法的示例,class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 “ + m + “/“ + d + “/“ + y + “.“); public static void main(String args) Sdate S1,S2; S1=new Sdate(); S2=new Sdate(3,3,1973); ,The constructor Sdate() is undefined,40,参数传值,当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。 public class Date /类声明 int year,month,day; /成员变量,表示年、月、日 void setDate(int y,int m,int d) /成员方法,设置日期值