《java类与对象的创建.docx》由会员分享,可在线阅读,更多相关《java类与对象的创建.docx(17页珍藏版)》请在三一办公上搜索。
1、java类与对象的创建试类.类类类类修1.类以Cl不能且第(1(2me、2.类编号类能。卜igh和试验四类和对类的定义类是组成Java程类的实现包括两修饰符class类类/*类体的内容类声明以下是一个类声IaSSPeOPIe成为能是Java中的关一个字母不能1)假如类名使2)类名最好容AlneriCanGam类体编写类的目的是、以及它们类体的内容由两卜.面是一个类名和Ia加Urea,方象的创程序的基本要素两部分:类声明类名名extends容容*/声明的例子。为类声明,Peo关键字,要符合能是数字。但给用拉丁字母,易识别,当类me.HelloChina是为了描述一类们之间的内容称两部分构成:一名
2、为TraPeZia的方法定义部分定创建建素。类封装r-明和类体。基本父类名(ople是类名。习合标识符规定,给类命名时,最那么名字的首名由几个单词a等。类事物共有的属称为类体,大括部分是变量的的类,类体内容定义了两个方法一类对象的状态本格式为:习惯上,类名的即类的名字可最好遵守下列规首写字母运用大词复合而成时属性和功能,描括号之间的内容的定义,用来刻容的变量定义部法:getrea态和方法。类用的第一个字母大可以由字母、下规则:大写字母,如H,每个单词的描述过程由类体容称为类体的刻画属性;另一部分定义了4个和SelHigho用来定义对象的大写,但这不是下划线、数字或Hell。、Time、P首写字
3、母运用体来实现。类声内容。一部分是方法的个float类型变的模板。是必需的。类的或美元符号组成People等。大写,如Beij声明之后的一对的定义,用来刻变量:top.bollo的名字成,并ingTi对大括刻画功。m、h二二.对对1.对创(1一类类如这(2使造方例对象对象的创建创建一个对象包1)对象的声明一般格式为:类的名字对象名如:这里People是类2)为声明的对运用new运算符方法(你肯定还例1:包括对象的声明。名字字;类的名字,ZhU象安排内存。符和类的构造方还记得构造方法明和为对象安排Ubajie是我们声方法为声明的对法的名字必需和配内存两个步骤声明的对象的名对象安排内存,和类名相同
4、这一骤。名字。假如类中没有一规定),如:有构造方法,系系统会调用默认的构2.对对这些通例程类在上Ong调3.对注假如类里对象的运用对象不仅可以改些方法可以产生通过运用运算符例2:程序执行结果如类中的方法可以上述代码中,当调用SPeak方法对象的引用和实里定义了一个或变更自己变量的生肯定的行为。符.,对象可以如下:以操作成员变量对象ZhUbajie法后,也将自己实体或多个构造方法的状态,而且还以实现对自己的量,当对象调用调用SPeak方法己的头修改成:法,那么Java不还拥有了运用创的变量访问和方该方法时,方法法后,就将自己歪着头。不供应默认的构创建它的那个类方法的调用法中出现的成员己的头修改成
5、:构造方法。类中的方法的能员变量就是指该:歪者头。同实力,对象通过该对象的成员变同样,对象SUn过运用变量。nwuk当存放再那假Pl把p2是给P14-1-2因空对运行检查I有,自己体4.参当的所的in向参(1当用类创建一个放着引用,以确再以例1中的P那么内存模型如假如在程序中使=p2:把p2的引用(p是两个名字,但1的变量。这时2所示:因此,假如一个对象,空对象不行时会出现异样查。因此,在编注事实上,假如发觉这样己检查哪些对象所占有的内存参数传值当方法被调用时全部参数都是传nt型参数X传递参数传值的变D基本数据类个对象时,类中确保实体由该对Point类为例,如图4-1-1所示运用了下述赋值p2
6、在内存中的但在系统看来它时假如输出P1.个类创建的两个不能运用,即不常:NUuPOinterE编写程序时要避JaVa有所谓垃样的实体,就释象应当释放内存存就会被释放。时,假如方法有传值的,也就递一个int值,量的值。型参数的传值中的成员变量被对象操作运用。假如分别运用:图4-1值语句:的名字)赋给了它们的名字是一X的结果将是图4-1个对象具有相同不能让一个空对Exceptione由于避开运用空对象垃圾收集机制释放实体占有的存。在上述程序中有参数,参数必是说,方法中那么参数X得被安排内存空间类的构造方法IT对象内存了pl,因此Pl和一个:OXDDO系6,而不是12,卜2对象内存同的引用,那么对象
7、去调用方法于对象是动态地象。制,这种机制周的内存。因此,中,当将P2的必须要实例化,参数变量的值得到的值是传递问,这些内存空Point(intx,in模式1和p2木质上是系统将取消原来,即pl、p2有模式2么就具有完全相法产生行为。假地安排实体,所周期地检测某个Java编程人员引用赋给pl后即参数变量必值是调用者指定递值的副本。方空间称为该对象nty)创建了两个是一样的了。虽来安排给Pl的有相同的实体。相同的实体。没假如程序中运用所以Java的编个实体是否已不员不必像C+程后,最初安排给必需有详细的值的值的副本。方法假如变更参象的实体,而对个对象pl.p2虽然在源文件中的内存,即释放内存模式变
8、成没有实体的对象用了空对象,程编译器对空对象不再被任何对象程序员那样,要给对象Pl的变量值。在JaVa中,例如,假如向参数的值,不会对象中2:中Pl、放安排成如图象称为程序在象不做象所拥要时刻量(实方法向方法会影响对参数(2Ja变量如变量如图仔例对于基本数据类数传递一个float2)引用类型参ava的引用型数量所引用的实体假如变更参数变量假如具有同样4-1-3所示:细致阅读下面的例3:类型的参数,向t值,但可以向数的传值数据包括对象、体。变量所引用的实样的引用,就会的例3,特殊注向该参数传递的向double型参数数组以及接口实体,就会导致会用同样的实体图4-1-3留意引用类型参的值的级别不行数
9、传递一个flo口。当参数是引致原变量的实体体。但是,变更引用类型参数参数和基本数据可以高于该参数Oat值。引用类型时,传体发生同样的变变参数的引用不数的传值据类型参数的区数的级别,比如传值传递的是变更,因为,两不会影响向其传区分。如,不行以向i是变量的引用而两个同类型的引传值的变量的引nt型而不是引用型引用,st被共享.S类量,中完互不在态变在静atic修饰符可以用static修饰用StatiC修饰用static修饰被static所修饰享。只要这个类StatiC变量类的成员变量有叫实例变量。静态变量在内完成静态变量的对于实例变量不影响。在类的内部,可变量。例如:在以下Scope类静态变以用来修
10、饰类的饰的成员变量表饰的成员方法表饰的程序代码块的成员变量和类被加载,Java有两种:一种是内存中只有一个的内存安排。可量,每创建一个可以在任何方法类中定义了静态变量与的成员变量、成表示静态变量,表示静态方法,块表示静态代码成员方法表明虚拟机就能根是static修饰的变个拷贝,运行时可以干脆通过类个实例,就会为法内干脆访问静态变量a,在m与静态成员方法和代码可以干脆通过可以干脆通过码块,当Java虚归某个类全部依据类名在运行变量,叫类变量时Java虚拟机类名访问静态变为实例变量安排静态变量;在其main。方法中采方法的码块。过类名来访问。过类名来访问。虚拟机加载类时,它不依葬于行时数据区的方量
11、或静态变量:机只为静态变量变量。配一次内存,实例其他类中,可以用多种方式访的设计时,就会执行该类的特定实例方法区内定位到:另一种是没有安排一次内存例变量可以在内以通过某个类的问这个变量,计该代码块。例,被类的全部到它们。有被static修饰存,在加载类的内存中有多个拷的类名来访问它它的最终取值有实例饰的变的过程拷贝,它的静值为4。St全局阿。出电们。下投票同一此另的选以atic变量在某种变量,静态变能被类的全部假如类的全部例如某种类型电压为15V,这下面再用详细例票总数达到100一个数据,即投此外,最大投票另外,为了防止选民的对象。以下代码是Vot种程度上与其他变量供应了这一有实例共享,可有实
12、例都包含一的变压器Tran这是对全部变压例子说明静态变时,就停止投投票次数,因此票数100是一个止选民重复选票ter类的源程序他语言(如C语一功能,他有如可作为实例之间一个相同的常量nsformer类,它压器TranSforlne变量的用法。假投票。从这个问此把它定义为静个适用于全部选票,必需保存已序。语言)中的全如下两个作用。间进行沟通的共量属性,可把这它所接受的最小er对象适用的属假定有一群选民问题领域中抽象静态类型。选民的常量,因已经参加投票的局变量相像。共享数据。这个属性定义为小输入电压为1属性,可在Tra民进行投票,每象出Voter类,因此把它定义为的选民的信息,Java语言不支为静
13、态常量类型IlOV,最大输入ansformer类中每个选民只允许代表选民。全部为静态常量类型可采纳一个集支持不屈于任何型,从而节约内入电压为220V中按如下方式定许投一次票,并有的选民都会型。集合来存放已经何类的内存空V,输定义它并且当变更经投票在该程在Voter类的m程序的运行结果main。方法中,先果如下:先创建了3个选民,然后让他们依次投票,其中Tom还试图进行重复投票。二二.s成量一1.静因也不Voter选民不序编StatiC方法成员方法分为静一样,不须要创静态方法可访问因为静态方法不不能干脆访问所r类中,CoUnt民对象的名字。不妨用反证法来译胜利,那么静态方法和实例创建类的实例,问
14、的内容不须要通过它所所属类的实例变变量是静态变以下程序在V来证明在printV当Java虚拟机例方法。用stat可以干脆通过所属的类的任何变量和实例方法量,表示全部VOter类的静态方VoIeReSUl1()方法机在执行以下代tic修饰的方法过类名来访问。何实例就会被调法,但是可以直的选民的共同方法PrinlVoIe法中不能干脆访代码时会遇到问叫静态方法,例如:调用,因此在静干脆访问所属类投票数,nameerResult()T-脆访问name变量问题。或类方法。静静态方法中不能类的静态变量和e变量是实例变接访问count和量或者this.nam静态方法也和静能运用this关键和静态方法。例变量
15、,表示每个和name变量。me变量。假定以静态变键字,例如在个详细以上程Ja而对含V找到由假如那r对象以来访静su实例2.实如静态OUnIava虚拟机在执对于name变量或Voter类信息的方name变量或由此可见,在静果程序中出现这那么假如PrintV象的引用来访问以上程序从VOIe访问name变量,静态方法中也不UPCr关键字用来相关,那么和实例方法可访问假如一个方法没态方法、实例变静态变量、V。执行静态方法P或this.name变方法区找寻该量this.name变量静态方法中不能这样的操作,JavVoteResultO方法问name属性。ers集合中依次,使Java虚拟不能运用super
16、来访问当前Su和this关键字一问的内容没有用static修量和实例方法Oter静态变量和PrintVoteReSUIt变量,Java虚拟量,而不会到存量。能干脆访问所属va编译器会生法须要访问某个例如:次取出每个VOt机能明确知道关键字。例如Ub实例从父类样,在静态方饰,那么它就是。例如Voter类和name实例变t()时,它能顺当拟机无从推断到存放全部Vote属类的实例变量生成以下编译错个特定Voter对ter对象,然后打道究竟访问哪个以下程序是非BaSe中继承的方法中也不能使是实例方法。在类的VoteFOr()方变量。利地从Voter类究竟属于哪个VCr对象的堆区去量或实例方法,错误:对
17、象的name属打印它的name个Voter对象的非法的:的方法和属性。运用super关键字在实例方法中可方法就是实例方类方法区内找到VOter对象,Jav去找寻它,所以因为Java虚拟屈性,该怎么办e属性。程序以name属性。既然super关字。可以干脆访问所方法。在这个方到COUnt静态变va虚拟机只会以Java虚拟机拟机无法定位它办呢?必需通过以voter,name的关键字与类似的所属类的静态变方法中会干脆访变量,会在包机无法它们。过Vote的形式的特定变量、访问c在在For()3.静静既然法的st生,中才4.作作拟机在在静态方法mai在执行tom.vote)方法,因此在静态方法必需被静态
18、方法用来表然如此,当前类定义是非法的atic和abstract自己实现该方才会实现它。作为程序入口的作为程序入口的机只要加载了m在main。静态方in()中创建了一eFor()或者mik在方法内访问na被实现表示某个类所特类必需为静态方的:t修饰符是一对方法:假如一个的Inairl()方法是的main。方法必main。方法所属方法中不能干脆一些Voter实例e.voteFor()方法ame变量时,它特有的功能,这方法供应实现。对冤家,恒久个方法是抽象的是静态方法必需运用static修的类,就能执接访问实例变量例,然后通过实法时,Java虚拟它会顺当地从堆这种功能的实现换句话说,一远不能在一起使
19、的,那么它就只修饰,因为把执行main。方法量和实例方法。在实例的引用来访拟机能明确知道堆区内找到这个现不依靠于类的一个静态的方法运用。假如一个只表示类所具有main。方法定义,而无需先创在调试程序时会访问VoteForo方道究竟执行哪个个Voter实例的的详细实例,也不法不能被定义为个方法是静态的有的功能,但不义为静态方法,建这个类的实会常常遇到类似方法。个VOter实例的的name变量。不依竟于它的子为抽象方法。以的,它就必需自不会实现它,在,可以使得Ja实例。似下面的编译借的vote子类。以下方自力更在子类ava虚错误:正5.方不译成机的线程主就访Oter对正常的做法是通方法的字节码都不
20、管实例方法,成二进制代码,主线程执行I。程执行代表以下主线程会依据方访问tom变量访对象的name变通过Sample实例都位于方法区还是静态方法称为字节码。Qm.VoleFor()或者下程序代码的字方法调用栈的有访问的Voter对变量。例的引用来访法,它们的字节Java虚拟机的者mike.VoteFo字节码指令时:有关信息,在堆象的name变量问实例方法和实节码都位于方法的解析据能够解。N)方法时,都堆区找到相应的量:假如执行j实例变量。法区内。Java编解析这种字节码都从方法区内获的name变量。ack.voteFor()方译器把JaVa方码。如图4-2-1所获得VoteFor()方假如执行
21、Iom.方法,那就访问方法的源程序代所示,当JaVa方法的字节码。.voteFor()方法问jack变量访问代码编虚拟当主,那问的V三三.s类类中被执先加()方法运类StatiC代码块类中可以包含静包含多个静态执行一次。例如载Sample类,法。运行这个程序,类的构造方法用静态代码块,它态块,那么Java如以下Sample类在加载的过程将输出如下结用于初始化类的图4-2-1方它不存在于任何a虚拟机将依据类中包含两个静程中依次执行两结果:的实例,而类的方法的字节码都何方法体中。在照它们在类中出静态代码块。运两个静态代码块的静态代码块则都位于方法区在Java虚拟机加出现的依次依次运行Sample类
22、块。Java虚拟机则可用于初始化加载类时会执行次执行它们,每类的main。方法机加载SamPIe化类,给类的静行这些代码块。每个静态代码块法时,Java虚拟类后,再执行静态变量赋初始假如块只会拟机首行main始值。静它们静态代码块与静。例如:静态方法一样,也不能干脆访问类的实例变变量和实例方法,而必需通过实例的引用来访问.J当作自的变字,访问1.私用当如m来名To对类中例Java中的访问当一个类创建了己的变量和使变量或通过.运用来修饰成员注J一个类中限制符没有关私有变量和私有用关键字private当在另一个类中假如Tom类中的来操作这个私有Om来调用这个对于私有成员变的私有方法,例1:访问修修
23、饰符了一个对象之后运用类中的方法运算符运用类中变量或方法。中的实例方法总关系。有方法C修饰的成员变中用类Tom创建的某个成员是私有类变量。假如个私有的类方法变量或方法,只如例I所示。修饰符后,该对象可以法是有肯定限制中的方法。访问下面详细说明总是可以操作该变量和方法称为建了一个对象后私有类变量(静Tom类中的某法。只有在本类中创符与方以通过.运算符制的。所谓访问问限制修饰符有明这些修饰符的该类中的成员变为私有变量和私后,该对象不能静态成员变量)某个方法是私有创建该类的对象方法的符操作Fl己的变问权限是指对象有privateprot的作用。变量:类方法总私有方法。如:能访问H己的私,那么在另外有
24、的类方法,那象时,这个对象的重载变量、运用类中象是否可以通过ecled和PUbIiC总是可以操作该私有变量和私有外一个类中,也那么在另一个类象才能访问自己中的方法,但对过.运算符操作c,都是Java的该类中的类变量有方法。如:也不能通过类名类中,也不能通己的私有成员变对象操作Fl己的关键量,与名T。通过类变量和2.公用当如:如类变个公3.受用公有变量和公有用public修饰的当在任何一个类假如Tom类中的变量。假如Tom公有的类方法。受爱护的成员变用protected修饰有方法的成员变量和方类中用类Tom创的某个成员是公m类中的某个方变量和方法饰的成员变量和方法称为公有变创建了一个对象公有类变
25、量,那方法是公有的类和方法称为受保变量和公有方法象后,该对象能那么在另外一个类方法,那么在爱护的成员变量法。如:能访问自己的个类中,也可以在另一个类中,量和受爱护的方public变量和类以通过类名T。也可以通过类方法。如:类中的public方Om来操作这个类名Tom来调方法。个私有用这当的prom类假4.友不当自己类友假在类,当在任何一个类rotected变量和类的protected类假如Jerry与To友好变量和友好不用private、pu当在另一个类中己的友好变量和友好成员变量和假如Jey与To在源文件中编写并用该类创建类中用类Tom创和protected方法类变量和proteom是同一包
26、中好方法ublicProteCte中用类Tom创建和友好方法。任和类友好方法。Om是同一个包写命名的类总是建了一个对象,创建了一个对象法。在任何一个ected类方法。中的类,那么Jeed修饰符的成员建了一个对象后任何一个与Tom包中的类,那么是在同一包中的那么该类的这象后,假如这个个与Tom同一erry类中的cat员变量和方法被后,假如这个类m同一包中的类么,下述Jerry类的。假如你在源这个对象将不能个类与类在同一包中的类中,t.weightscat.f被称为友好变量类与Tom类在类中,也可以通类中的cat.weig源文件中用imp能访问自己的友一个包中,那么也可以通过Tof(3f,4f)都
27、是合法量和友好方法在同一个包中,通过Tom类的类ght、cat.f(3f,4fPort语句引入了友好变量和友好么该对象能访问o11类的类名访法的。O如:那么该对象能类名访问Tomf)都是合法的。了另外一个包中好方法。问自己访问T能访问m类的中的5.P类可这y、P二二.方方有技师再式是再以行哪public类与友好类声明时,假如可以在任何另外这样的类称为友注不能用Pprivateo方法的重载有时候,类的同师能训练动物,再例如某个类的是按两个城市的再例如java.Iang以下程序多次调个max。方法。好类果关键字class前外一个类中,使友好类,那么另protected和PriV同一种功能有多对于不
28、同的动的一个功能是比的名字,以及城g.Math类的ma调用Math类的。前面加上publi运用pubic类创另外一个类中使Vate修饰类;按多种实现方式,动物有不同的训比较两个城市是城市所在国家的ax()方法能够从max()方法,运ic关键字,就称创建对象。假如运用友好类创建按访问权限从高究竟采纳哪种训练方式。是否相同,一种的名字进行比较从两个数字中取运行时,Java虚称这样的类是一果一个类不加P建对象时,要保高到低的排列顺种实现方式,取种方式是按两个较。取出最大值,它虚拟机先推断给一个public类,public修饰,如保证它们是在同依次是public,取决于调用者给个城市的名字进它有多种实
29、现方给定参数的类型,如:如:同一包中。、protectedsfr给定的参数。例进行比较,另一方式。型,然后确定到riendl例如杂一种方究竟执对说,重.在法,三三.访访当值时例如对于类的方法(一个方法是另重载方法必需满方法名相同。方法的参数类方法的返回类方法的修饰符在一个类中不允Java虚拟机在访器问器get/set当声明类的非P时,我们须要给此:(包括从父类中一个方法的重满意以下条件:O类型、个数、顺类型可以不相同符可以不相同。允许定义两个方在运行时就无法方法public成员变量此屈性生成访中继承的方法)重载方法。依次至少有一项同。方法名相同,并法确定究竟执行量时,如private问器,这样通过,假如有两个项不相同。并且参数签名也行哪个方法。参e类型的变量,过类的对象调用个方法的方法名也完全相同的方参数签名此指参假如在方法中用相应的publi名相同,但参数方法。因为假如参数的类型、个中要读取或者设ic访问器就可以数不一样,那么如存在这样的两个数和依次。设置这个成员属以读取和设置值么可以两个方属性的值了。