资源描述:
《第五讲 类与对象(二).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五讲类与对象(二)方法的重载、static、包信息管理系武俊琢**温故**类的定义成员变量说明成员方法说明对象的创建和使用创建对象通过对象引用成员变量和成员方法构造方法构造方法与一般成员方法的区别P38,构造方法不是void型本讲要点方法的重载成员方法的重载构造方法的重载static变量和static方法包package命令import命令方法的重载在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。同名的方法可以有不同的方法体从而完成不同的任务,当
2、调用方法时,系统会根据调用方法的实际参数类型和个数自动调用相应的方法,这就是方法的重载。classHeshang{voiddashui(Strings){System.out.println(s+"挑水喝");}voiddashui(Strings1,Strings2){System.out.println(s1+"和"+s2+"抬水喝");}voiddashui(Strings1,Strings2,Strings3){System.out.println(s1+""+s2+""+s3+"没水喝");}publ
3、icstaticvoidmain(String[]args){Heshangh=newHeshang();h.dashui("孙悟空");h.dashui("孙悟空","猪八戒");h.dashui("孙悟空","猪八戒","沙和尚");}}构造方法的重载classPerson{Stringname;intage;floatheight,weight;publicPerson(){age=18;name="无名";}publicPerson(Stringname){this.name=name;}publicP
4、erson(Stringname,intage,floatheight,floatweight){this.name=name;this.age=age;this.height=height;this.weight=weight;}voidout()//成员变量的操作只能放在方法中{System.out.println(“姓名:”+name+“年龄:”+age+“岁”+"身高:"+height+"米"+"体重:"+weight+"斤");System.out.println();}}classPersonTes
5、t{publicstaticvoidmain(String[]args){Personp1,p2,p3;p1=newPerson();p2=newPerson("孙悟空");p3=newPerson("猪八戒",300,2.8f,380);p1.out();p2.out();p3.out();}}构造方法的重载(二)对象变量的赋值classPersonTest{publicstaticvoidmain(String[]args){Personp1,p2,p3;p1=newPerson();p2=newPerso
6、n("孙悟空");p3=newPerson("猪八戒",300,2.8f,380);p1=p2;p1.name=“唐僧”;p1.age=50;p1.out();p2.out();p3.out();}}结果如何?对象变量的赋值,只是对象中保存的地址发生的变化,而并未改变对象的状态。如果一个对象没有任何变量引用它,则它成为垃圾内存。static关键字静态变量/静态方法:对于成员变量/成员方法的声明,可以在类型的前面加修饰符“static”,称之为静态变量/静态方法。类变量/类方法和实例变量/实例方法:静态变量/静态
7、方法属于类而不属于类的某个实例,可直接由类名来调用(类名·变量名/类名·方法名),因此也叫类变量/类方法;非静态的成员变量/方法必须实例化后通过对象名来调用(对象名·变量名/对象名·方法),因此称为实例变量/实例方法。说明:类变量和类方法也可以通过实例调用。main()方法是静态的,因此java虚拟机在执行main方法时不需创建main方法所在类的实例就可以直接调用。类变量,它属于类所有,且在所有的实例中都共享同一个内存空间;实例变量,对于每一个实例,这个变量都拥有独自的内存空间。类方法,在类加载时分配方法入口
8、地址,因此可被类直接调用。实例方法,只有创建类的对象,才会分配方法入口地址,并只能通过对象调用方法。类变量/类方法、实例变量/实例方法classStaticDemo{staticintx;inty;publicstaticintgetX(){returnx;}publicstaticvoidsetX(intnewX){x=newX;}publicintgetY(){returny;}p