收藏 分销(赏)

第五讲 类与对象(二).ppt

上传人:pc****0 文档编号:13359905 上传时间:2026-03-07 格式:PPT 页数:19 大小:172KB 下载积分:10 金币
下载 相关 举报
第五讲 类与对象(二).ppt_第1页
第1页 / 共19页
第五讲 类与对象(二).ppt_第2页
第2页 / 共19页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,河南经贸职业学院信息管理系,主讲:武俊琢,第五讲 类与对象(二),方法的重载、,static、,包,信息管理系 武俊琢,*温故*,类的定义,成员变量说明,成员方法说明,对象的创建和使用,创建对象,通过对象引用成员变量和成员方法,构造方法,构造方法与一般成员方法的区别,P38,,构造方法,不是,void,型,本讲要点,方法的重载,成员方法的重载,构造方法的重载,static,变量和,static,方法,包,package,命令,import,命令,方法的重载,在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。,同名的方法可以有不同的方法体从而完成不同的任务,当调用方法时,系统会根据调用方法的实际参数类型和个数自动调用相应的方法,这就是,方法的重载。,class,Heshang,void,dashui(String,s),System.out.println,(s+,挑水喝);,void,dashui(String,s1,String s2),System.out.println,(s1+,和+,s2+,抬水喝);,void,dashui(String,s1,String s2,String s3),System.out.println,(s1+s2+s3+,没水喝);,public static void,main(Stringargs,),Heshang,h=new,Heshang,();,h.dashui,(,孙悟空);,h.dashui,(,孙悟空,猪八戒);,h.dashui,(,孙悟空,猪八戒,沙和尚);,构造方法的重载,class Person,String,name;int,age;float height,weight;,public Person(),age=18;,name=,无名;,public Person(String name),this.name=name;,public Person(,String,name,int,age,float height,float weight,),this.name=name;,this.age=age;,this.height=height;,this.weight=weight;,void out()/,成员变量的操作只能放在方法中,System.out.println,(“,姓名:”+,name+“,年龄:”+,age+“,岁”+,身高:+,height+,米+体重:+,weight+,斤);,System.out.println,();,class,PersonTest,public static void main(String,args,),Person p1,p2,p3;,p1=new Person();,p2=new Person(,孙悟空);,p3=new Person(,猪八戒,300,2.8,f,380);,p1.out();p2.out();p3.out();,构造方法的重载(二),对象变量的赋值,class,PersonTest,public static void main(String,args,),Person p1,p2,p3;,p1=new Person();,p2=new Person(,孙悟空);,p3=new Person(,猪八戒,300,2.8,f,380);,p1=p2;,p1.name=“,唐僧”;,p1.age=50;,p1.out();p2.out();p3.out();,结果如何?,对象变量的赋值,只是对象中保存的地址发生的变化,而并未改变对象的状态。,如果一个对象没有任何变量引用它,则它成为垃圾内存。,static,关键字,静态变量/静态方法,:,对于成员变量/成员方法的声明,可以在类型的前面加修饰符“,static”,,称之为静态变量/静态方法。,类变量/类方法,和,实例变量/实例方法,:静态变量/静态方法属于类而不属于类的某个实例,可直接由类名来调用(类名变量名/类名方法名),因此也叫,类变量/类方法,;非静态的成员变量/方法必须实例化后通过对象名来调用(对象名变量名/对象名方法),因此称为,实例变量/实例方法,。,说明:,类变量和类方法也可以通过实例调用。,main(),方法是静态的,因此,java,虚拟机在执行,main,方法时不需创建,main,方法所在类的实例就可以直接调用。,类变量,,它属于类所有,且在所有的实例中都共享同一个内存空间;,实例变量,,对于每一个实例,这个变量都拥有独自的内存空间。,类方法,,在类加载时分配方法入口地址,因此可被类直接调用。,实例方法,,只有创建类的对象,才会分配方法入口地址,并只能通过对象调用方法。,类变量/类方法、实例变量/实例方法,class,StaticDemo,static,int,x;,int,y;,public static,int,getX,(),return x;,public static void,setX(int,newX,),x=,newX,;,public,int,getY,(),return y;,public void,setY(int,newY,),y=,newY,;,0,x,StaticDemo,入口地址,getx,(),入口地址,setx,(),public class,ShowDemo,public static void main(String,args,),System.out.println,(,静态变量,x=+,StaticDemo.getX,();,StaticDemo,a=new,StaticDemo,();,StaticDemo,b=new,StaticDemo,();,a.setX(10);,a.setY(20);,b.setX(30);,b.setY(40);,System.out.println,(,静态变量,a.x=+,a.getX,();,System.out.println,(,实例变量,a.y=+,a.getY,();,System.out.println,(,静态变量,b.x=+,b.getX,();,System.out.println,(,实例变量,b.y=+,b.getY,();,System.out.println,(,静态变量,x=+,StaticDemo.getX,();,内存模型分析,实例变量,0,a.y,0,x,StaticDemo,0,b.y,10,x,30,x,20,a.y,40,b.y,总结(静态成员在使用时应该注意):,1、静态方法中只能直接调用同类中其他静态成员,而不能调用非静态成员。反之,则可以。,2、静态成员的引用直接通过类名引用,也可以通过该类的对象来引用。,3、静态方法中不能使用,super,和,this,变量。,例3:,class A,static,int,i=10;,String s=hello world!;,public static void main(String,args,),System.out.println(i,=+i);,/,System.out.println(s,=+s);,static,应用注意事项,this,关键字,this,关键字只能用在实例方法或构造方法中,代表使用该方法的当前的对象。,void,setAge(int,age),this.age=age;,public static void main(String,args,),Person p1,p2,p3;,p1=new Person();,p2=new Person(,孙悟空);,p3=new Person(,猪八戒,300,2.8,f,380);,p1.setAge(18);p2.setAge(19);p3.setAge(20);,p1.out();p2.out();p3.out();,包的概念,为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,,,java,引入了包。,Java,中的包与文件系统的目录层次结构是一一对应的,。一个包中可以包含子包,包名与子包名间用“”分隔。,Java,提供的类和接口是按不同的用途分别放在不同的包中。,java.applet,java.awt,java.lang,java.io,java.util,package,语句,功能:创建包,格式:,package,包名.子包名;,要求:此语句必须放在整个源程序第一条语句,例:,package p;/(,在当前目录下创建一个,p,包),package a.b;/(,在当前目录下创建,a,,在,a,下再创建,b),注意:嵌套的包名之间以圆点分隔(“.”)。,如果源文件中省略了,package,语句,则文件中定义的类隐含在一个无名包中,这个无名包就是源文件所在的位置。,引入,java,包中的类和接口,import,语句,一般情况下,import,语句紧跟在,package,语句之后,功能:将其他包中的类引入到当前程序中。,格式:,import,带包层次结构的类名;,说明:,1、引入包时,类名可以使用通配符“*”,表示包模块中某个层次的类全引入进来。,例:,import,java.io,.*;,import,java.awt.Graphics,;,2、java,会自动引入,lang,包下的所有类和接口。,3、前缀包名法:不用,import,语句也可以引入其他包中的类和接口。,class Area/,作业1,float,getArea(float,r),System.out.print(,方法一:);,return 3.14f*r*r;,double,getArea(float,x,int,y),System.out.print(,方法二:);,return x*y;,float,getArea(int,x,float y),System.out.print(,方法三:);,return x*y;,double,getArea(float,x,float y,float z),System.out.print(,方法四:);,return(x+x+y*y+z*z)*2.0;,作业,1、将,P38,中方法中的,Area,类,补充为如右所示的程序。定义新类,AreaTest,,,并,创建,Area,类的对象调用每一个成员方法,观察不同的参数与调用方法的之间的关系。,2、将作业1中,Area,与,AreaTest,类分别放在不同的包中重新编译运行。,3、按程序模板(,Test.java,),要求编写源文件,将代码,x,按其后的要求替换为,java,程序代码。分析程序输出结果。,作业3程序模板,class A,代码1/声明一个,float,型的实例变量,a,代码2/声明一个,float,型的类变量,b,void,setA(float,a),代码3/将参数,a,赋值给成员变量,a,void,setB(float,b),代码4/将参数,b,赋值给成员变量,b,float,getA,(),return a;,static float,getB,(),return b;,void,outA,(),System.out.println,(a);,代码5/定义方法,outB,(),,输出变量,b,public class Test,代码6/通过类名引用变量,b,,给,b,赋值为100,代码7/通过类名调用方法,outB,(),A cat=new A();,A dog=new A();,代码8/通过,cat,调用方法,setA,(),,将,cat,的成员变量,a,设置为200,代码9/通过,cat,调用方法,setB,(),,将,cat,的成员变量,b,设置为300,代码10/通过,dog,调用方法,setA,(),,将,dog,的成员变量,a,设置为400,代码11/通过,dog,调用方法,setB,(),,将,dog,的成员变量,b,设置为500,代码12/通过,cat,调用,outA,(),代码13/通过,cat,调用,outB,(),代码14/通过,dog,调用,outA,(),代码15/通过,dog,调用,outB,(),技能训练五,方法的重载、类变量/类方法、包,实验目的,让学生掌握方法的重载,让学生掌握类变量与实例变量,以及类方法与实例方法的区别。,让学生掌握包的使用,实验要求与内容,调试补充作业1、2、3,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服