《java类与对象》PPT课件.ppt
《《java类与对象》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《java类与对象》PPT课件.ppt(78页珍藏版)》请在三一办公上搜索。
1、第三章,类与对象,2,目标,面向对象技术基础类的概念、定义与使用对象的生成、使用static关键字this关键字final关键字Java类中的限定词包和import语句,3,面向对象编程,4,相关概念,5,对象,对象是客观存在的具体实体,具有明确定义的状态和行为。,6,对象的示例,收银员对象,顾客对象,顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品,状态,姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单,行为,7,类,类是用于组合各个对象所共有操作和属性的一种机制,形状类,动物类,汽车类,类的示例,“类是具有相同属性和行为的一组对象的集合”,8,类和对象的示例,收银员
2、,系统管理员,仓库管理员,促销员,采购经理,9,属性,事物的特性,在类中表示为变量每个对象的每个属性都拥有其特有的值属性名称由类的所有实例共享,住址,姓名,属性,年龄,“在类中表示对象或实体拥有的特性时称为属性”,10,方法,“对象执行的操作称为方法。”,11,方法的示例,缝衣服的步骤,量尺寸,得到工具,缝衣服,方法,缝制衣服,裁缝,12,类和对象的区别,类是概念模型,定义对象的所 有特性和所需 的操作,对象是真实的模型,类定义实体,对象是实际的实体,13,面向对象的基本特征,14,封装性,信息隐藏,隐藏对象的实现细节,不让用户看到将东西包装在一起,然后以新的完整形式呈现出来例如,两种或多种化
3、学药品组成一个胶囊将方法和属性一起包装到一个单元中,单元以类的形式实现,“隐藏属性、方法或实现细节的过程称为封装。”,15,封装的示例 3-1,接口,采购经理,罗杰斯先生,法拉力公司,.,迪斯尼汽车公司,.,市场经理,雪莉女士,要求,16,封装的示例 3-2,有选择地提供数据,法拉力公司,迪斯尼汽车公司,17,封装的示例 3-3,实体法拉力公司,实体迪斯尼汽车公司,Auti Ltd,.,Buto Ltd,.,18,继承性,父 类,子类,19,多态性,父类,子类-绘制和移动三角形,子类-绘制和移动矩形,子类-绘制和移动五边形,子类,20,面向对象的Java实现,21,在 Java 中实现类,语法
4、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=100,y;void f()int x=10;y=x;/注意这里y得到的值为10,而不是100.,注:如果局
6、部变量的名字与成员变量的名字相同,则成员变量被隐藏,也就是说,这个成员变量在这个方法内暂时失效。,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;,注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,这时如果想在该方法内使用成员变量,必须使用关键字this。,26,类中的方法,方法的名称,参数列表,方法的主体,方法返回的对象类型或原始
7、类型,27,类中的方法,语法(,)其中,是方法返回值的数据类型 是用户自定义的方法名称方法的参数列表是一组变量声明。是方法的主体,28,类中的方法,不能为 Java 中的关键字,不能包含空格或点号“.”,可以下划线“_”、字母或“$”符号开头,方法的命名规则:,29,类中的方法,class Book String bookName;String authorName;int nopages;boolean available;void isAvailable()if(available=true)System.out.println(有这本书);.,30,创建对象,定义类的最终目的是要使用这些
8、类,创建并操纵某类的对象是使用该类的最主要手段。创建对象的一般格式为:类名 对象名=new 类名(参数);其中包含声明、实例化和初始化3个步骤,声明:类名 对象名 声明并不为对象分配内存空间,而只是分配一个引用空间;对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。,实例化 运算符new为对象分配内存空间,它调用对象的构造方法,返回引用。一个类的不同对象分别占据不同的内存空间。,生成 执行构造方法,进行初始化;根据参数不同调用相应的构造方法。,31,创建对象,
9、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;/声明对象/为对象分配内存,使用new 运算符和默认的构造方法ZhangSan=new Student();,32,对象的使用,对象不仅可以改变自己变量的状态,而且还拥有使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。通过圆点符号“.”
10、可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。,33,class Book String bookName;String authorName;int nopages;boolean available;Book(String bName,String aName,int Page,boolean a)bookName=bName;authorName=aName;nopages=Page;available=a;void isAvailable()if(available=true)System.out.println(有这本书);public c
11、lass BookTest public static void main(String args)Book objBook=new Book(a,b,3,true);objBook.isAvailable();System.out.println(objBook.bookName);,34,class Book String bookName;String authorName;int nopages;boolean available;void isAvailable()if(available=true)System.out.println(有这本书);public class Book
12、Test public static void main(String args)Book objBook=new Book();objBook.bookName=a;.objBook.isAvailable();System.out.println(objBook.bookName);,35,练习,创建一个Date类,具有三个整型成员变量year,month,day,具有三个成员方法setDate,isLeapYear,print,其中setDate用来给成员变量赋值,isLeapYear用来判断当前年份是否为闰年,print用来输出当前日期值。在主函数中创建Date类的对象,并调用三个成员
13、函数实现赋日期值,输出日期值,并判断当前年份是否为闰年。,36,构造方法,每当创建给定类的实例时就调用的方法与类同名,但没有返回类型Java 为对象分配内存,初始化实例变量时调用构造方法两种构造方法参数化构造方法隐式构造方法,37,隐式构造方法的示例,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
14、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(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;Syst
15、em.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)/成员方法,设置日期值/
16、无返回值,有3个参数 year=y;month=m;day=d;public static void main(String args)Date1 aday=new Date1();/创建对象 aday.setDate(2006,1,28);/调用类方法,41,1基本数据类型参数的传值,基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,比如,不可以向int类型参数传递一个float值,但可以向double类型参数传递一个float值。这种数据传递方式被称为是值传递,方法接收参数的值,但不能改变这些参数的值。,42,2引用类型参数的传值,引用传值方式:Java的引用类型数据包括对
17、象、数组和接口,当方法中参数是引用类型时,引用数据类型传递给方法的是数据在内存中的地址,方法中对参数变量的操作可以改变原变量的值。,43,class People String face;void setFace(String s)face=s;class C void f(int x,double y,People p)x=x+1;y=y+1;p.setFace(笑脸);System.out.println(参数x和y的值分别是:+x+,+y);System.out.println(参数对象p的face是:+p.face);public class Ep3_8 public static v
18、oid main(String args)int m=100;double n=100.88;People zhang=new People();zhang.setFace(很严肃的样子);C a=new C();a.f(m,n,zhang);System.out.println(main方法中m和n的值仍然分别是:+m+,+n);System.out.println(main方法中对象zhang的face是:+zhang.face);,zhang.face=很严肃的样子;,改变形参值 导致实参值的改变,zhang.face=“笑脸;,参数x和y的值分别是:101,101.88参数对象p的fa
19、ce是:笑脸main方法中m和n的值仍然分别是:100,100.88main方法中对象zhang的face是:笑脸,44,方法重载,方法重载,类中有多个具有相同名称的方法,或者是参数的个数不同,或者是参数类型不同,注意:方法返回值的类型不能用来区分重载的方法。不能通过两个方法的返回值的类型来区分它们。这是因为当你调用一个方法时,返回值的类型是不显示的。,45,class MethodOverloading void receive(int i)System.out.println(Receive one int data);System.out.println(i=+i);void recei
20、ve(int x,int y)System.out.println(Receive two int datas);System.out.println(x=+x+y=+y);public class MethodOverloadingTest public static void main(String args)MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);,46,构造方法的重载,class Sdate int month;int day;int year;Sdate(int m,int
21、d,int y)month=m;day=d;year=y;System.out.println(“日期是+m+/+d+/+y+.);Sdate()Sdate(int m,int y)month=m;year=y;public static void main(String args)Sdate S1,S2;S1=new Sdate();S2=new Sdate(3,3,1973);,47,static 修饰符,成员变量可以分为实例变量和类变量。同样,类中的方法也可分为实例方法和类方法。用static关键字修饰的变量是类变量,也称静态变量,同样的,用static关键字修饰的方法是类方法,也称静态
22、方法目的:使该变量或方法独立于类的实例,使用类去访问,而不用类实例,48,static 修饰符,注意:如果在声明时不用static关键字修饰,则默认声明为实例变量和实例方法。每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。,49,class Laderfloat upperBase,high;static float lowerBottom;Lader(float
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java类与对象 java 对象 PPT 课件
链接地址:https://www.31ppt.com/p-2052659.html