欢迎来到天天文库
浏览记录
ID:24818215
大小:566.50 KB
页数:53页
时间:2018-11-16
《轻工学院java语言程序设计第五讲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《Java程序设计》第五讲Java面向对象的特征(二)构造方法(constructor)问题的提出Java试图在每个对象一诞生时,就给它一个指定的状态(即成员变量的初值),但有时系统的缺省初值并不合适;所以在创建一个新对象时,需用构造方法完成合法的初始化,使成员变量的初始化工作不依赖于外界(系统)完成。构造方法是一种特殊的成员方法,构造方法与类同名。在创建每个新对象时自动执行,以保证新对象的各成员都有合法、确定的初值。构造方法(例)classDog{privateintweight;publicDog
2、(){//Dog类的构造方法weight=42;//实现对象状态(成员变量)的初始化}publicintgetWeight(){returnweight;}publicvoidsetWeight(intmyWeight){weight=myWeight;}}publicclassUseDog{publicstaticvoidmain(String[]args){Dogd=newDog();//用构造方法创建对象System.out.println("Thedog'sweightis"+d.getWei
3、ght());}}Thedog'sweightis42运算结果:构造方法的特点构造方法与成员方法不同,不能被直接调用,必须通过new调用;创建对象时,利用运算符new在内存中开辟专用空间,存放指定的类的实例(即对象),这时会自动执行类的构造方法,初始化新对象的成员变量.例:Dated=newDate(22,5,2003);构造方法的特点(续)构造方法没有返回类型,但声明时也不加void。构造方法可以完成更多的操作,而不仅仅局限于变量的初始化。(如在构造方法中调用其他方法等。)一个类可创建多个构造方法:
4、构造方法的重载。例:classDate(){Date(){……}Date(intx,inty){……}Date(intx,chary){……}}Dated1=newDate()Dated2=newDate(5,’A’)Dated3=newDate(5,12)//分加调用不同的构造方法构造方法的缺省每一个类至少有一个构造方法。当未定义任何构造方法时,系统在编译时,会提供一个缺省构造方法:无参数,方法体中没有内容缺省构造方法的初始化数据初值:数值型:0;布尔型:false;引用型:null;字符串型:nu
5、ll;一旦定义了构造方法,则缺省构造方法自动失效构造方法的缺省:例classDog{//程序员未定义构造方法privateintweight;publicintgetWeight(){returnweight;}publicvoidsetWeight(intmyWeight){weight=myWeight;}}publicclassUseDog{publicstaticvoidmain(String[]args){Dogd=newDog();//用缺省的构造方法创建对象System.out.prin
6、tln("Thedog'sweightis"+d.getWeight());}}Thedog'sweightis0运算结果:以“this”调用构造方法this(参数列表)表示调用本类的构造方法在一个构造方法中,当使用this并给它一个参数列表时,this显式调用参数匹配的另一个构造方法。使用this调用本类的其他构造方法时,this应是第一个可执行语句Java中对象的生命周期对象是某一个类的实例,是运行时动态生成的。对象如何创建、使用、回收?Java中对象的创建对象的声明Pointp1,p2;对象的实
7、例化p1=newPoint();p2=newPoint();new返回类对象的一个引用Pointp3=p2;对象的声明和实例化可写在同一条命令中Pointp4=newPoint();p10xabcdxy0.00.00xabcd对象的使用访问对象的成员变量对象.成员变量调用对象的方法对象.方法注意对象中成员变量和方法的访问权限管理。对象的回收一个对象在没有引用指向它时,可作为垃圾收集。垃圾收集器:Java运行环境中的垃圾收集器周期性地释放不用对象所占用的空间,自动实现内存回收。子类表示类之间一种“属于”
8、(isa)关系。例:publicclassEmployee{Stringname;DatehireDate;DatedateofBirth;StringjobTitle;intgrade;…}publicclassManager{Stringname;DatehireDate;DatedateofBirth;StringjobTitle;intgrade;Stringdepartment;…}类的继承:子类语法:Java中用extends关键字定义子类。
此文档下载收益归作者所有