欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第2章 类与对象的基本概念(精品).ppt

    • 资源ID:70744749       资源大小:1,020KB        全文页数:147页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第2章 类与对象的基本概念(精品).ppt

    Java语言程序设计(第2版)1第 2 章类与对象的基本概念清华大学 郑 莉Java语言程序设计(第2版),郑莉,清华大学2目录2.1面向对象的程序设计方法概述2.2类与对象2.3对象初始化和回收2.4枚举类型2.5应用举例2.6UML简介2.7注解2.8本章小节Java语言程序设计(第2版),郑莉,清华大学32.1 面向对象的程序设计方法概述(续)面向对象的程序设计与结构化程序设计方法相比,更符合人类认识现实世界的思维方式已成为程序设计的主流方向涉及的主要概念抽象封装继承多态Java语言程序设计(第2版),郑莉,清华大学4对象现实世界中万物皆对象都具有各自的属性,对外界都呈现各自的行为程序中一切都是对象都具有标识(identity),属性和行为(方法)通过一个或多个变量来保存其状态通过方法(method)实现他的行为2.1 面向对象的程序设计方法概述(续)Java语言程序设计(第2版),郑莉,清华大学5类将属性及行为相同或相似的对象归为一类类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为在面向对象的程序设计中,每一个对象都属于某个特定的类,2.1 面向对象的程序设计方法概述(续)Java语言程序设计(第2版),郑莉,清华大学6结构化程序设计通常由若干个程序模块组成,每个程序模块都可以是子程序或函数数据和功能分离,代码难于维护和复用面向对象程序设计基本组成单位是类程序在运行时由类生成对象,对象是面向对象程序的核心对象之间通过发送消息进行通信,互相协作完成相应功能2.1 面向对象的程序设计方法概述(续)Java语言程序设计(第2版),郑莉,清华大学72.1.1 抽象抽象忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面例:钟表数据(属性)intHour;intMinute;intSecond;方法(行为)SetTime();ShowTime();2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学82.1.2 封装封装是一种信息隐蔽技术利用抽象数据类型将数据和基于数据的操作封装在一起用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学9封装的定义清楚的边界所有对象的内部信息被限定在这个边界内接口对象向外界提供的方法,外界可以通过这些方法与对象进行交互受保护的内部实现功能的实现细节,不能从类外访问。2.1.2 封装(续)2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学102.1.3 继承继承是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的派生类(也称为子类)在继承过程中派生类继承了基类的特性,包括方法和实例变量派生类也可修改继承的方法或增加新的方法,使之更适合特殊的需要有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学11单继承任何一个派生类都只有单一的直接父类类层次结构为树状结构多继承一个类可以有一个以上的直接父类类层次结构为网状结构,设计及实现比较复杂Java语言仅支持单继承2.1.3 继承(续)2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学122.1.4 多态多态一个程序中同名的不同方法共存主要通过子类对父类方法的覆盖来实现不同类的对象可以响应同名的消息(方法),具体的实现方法却不同使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序方法同名问题2.1 面向对象的程序设计方法概述Java语言程序设计(第2版),郑莉,清华大学13类与对象在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)一个类是对一类对象的描述。类是构造对象的模板对象是类的具体实例2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学142.2.1 类的声明声明形式publicabstract|finalclass类名称 extends父类名称implements接口名称列表变量成员声明及初始化;方法声明及方法体;2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学15关键字class表明其后声明的是一个类。extends如果所声明的类是从某一父类派生而来,那么,父类的名字应写在extends之后implements如果所声明的类要实现某些接口,那么,接口的名字应写在implements之后2.2.1 类的声明(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学16修饰符可以有多个,用来限定类的使用方式public表明此类为公有类abstract指明此类为抽象类final指明此类为终结类类声明体变量成员声明及初始化可以有多个方法声明及方法体可以有多个2.2.1 类的声明(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学17钟表类public class Clock /成员变量成员变量 int hour;int minute;int second;/成员方法成员方法 public void setTime(int newH,int newM,int newS)hour=newH;minute=newM;second=news;public void showTime()System.out.println(hour+:+minute+:+second);2.2.1 类的声明(续)例2-12.2 类与对象Java语言程序设计(第2版),郑莉,清华大学18变量和对象变量除了存储基本数据类型的数据,还能存储对象的引用,用来存储对象引用的变量称为引用变量类的对象也称为类的实例2.2.2 对象的声明与引用2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学19对象的声明格式类名变量名例如Clock是已经声明的类名,则下面语句声明的变量aclock将用于存储该类对象的引用:Clockaclock;声明一个引用变量时并没有对象生成2.2.2 对象的声明与引用(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学20对象的创建生成实例的格式:new()例如:aclock=newClock()其作用是:在内存中为此对象分配内存空间返回对象的引用(reference,相当于对象的存储地址)引用变量可以被赋以空值例如:aclock=null;2.2.2 对象的声明与引用(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学21自动装箱拆箱Java5新增特性,基本数据类型的自动装箱拆箱自动装箱Java5之前:Integeri=newInteger(2);Java5:Integeri=3;自动拆箱Java5之前:intj=i.intValue();/i为Integer类型的对象Java5:intj=i;/i为Integer类型的对象2.2.2 对象的声明与引用(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学222.2.3 数据成员数据成员表示Java类的状态声明数据成员必须给出变量名及其所属的类型,同时还可以指定其他特性在一个类中成员变量名是唯一的数据成员的类型可以是Java中任意的数据类型(简单类型,类,接口,数组)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学23声明格式public|protected|privatestaticfinaltransientvolatile变量数据类型变量名1=变量初值,变量名2=变量初值,;格式说明public、protected、private为访问控制符static指明这是一个静态成员变量final指明变量的值不能被修改transient指明变量是临时状态volatile指明变量是一个共享变量2.2.3 数据成员(续)2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学25声明一个表示圆的类,保存在文件Circle.java中。然后编写测试类,保存在文件ShapeTester.java中,并与Circle.java放在相同的目录下publicclassCircleintradius;publicclassShapeTesterpublicstaticvoidmain(Stringargs)Circlex;x=newCircle();System.out.println(x);System.out.println(radius=+x.radius);2.2 类与对象2.2.3 数据成员(续)例2-2Java语言程序设计(第2版),郑莉,清华大学26编译后运行结果如下:Circle26b249radius=0解释默认的toString()返回:getClass().getName()+“”+Integer.toHexString(hashCode()2.2 类与对象2.2.3 数据成员(续)例2-2的运行结果Java语言程序设计(第2版),郑莉,清华大学27声明一个表示矩形的类,保存在Rectangle.java中;编写测试类,保存在ShapeTester.java中,二文件保存在相同的目录下publicclassRectangledoublewidth=10.128;doubleheight=5.734;publicclassShapeTesterpublicstaticvoidmain(Stringargs)Circlex;Rectangley;x=newCircle();y=newRectangle();System.out.println(x+y);2.2 类与对象2.2.3 数据成员(续)例2-3Java语言程序设计(第2版),郑莉,清华大学28编译后运行结果如下:Circle82f0dbRectangle92d342解释Circle及Rectangle类对象的状态如图2.2 类与对象2.2.3 数据成员(续)例2-3的运行结果Java语言程序设计(第2版),郑莉,清华大学29对ShapeTester类进行修改,使两个实例具有不同的实例变量值publicclassShapeTesterpublicstaticvoidmain(Stringargs)Circlex;Rectangley,z;x=newCircle();y=newRectangle();z=newRectangle();x.radius=50;z.width=68.94;z.height=47.54;System.out.println(x.radius+y.width+z.width);2.2 类与对象2.2.3 数据成员(续)例2-3修改Java语言程序设计(第2版),郑莉,清华大学30编译后运行结果如下:5010.12868.94解释Circle及Rectangle类对象的状态如图2.2 类与对象2.2.3 数据成员(续)修改后运行结果Java语言程序设计(第2版),郑莉,清华大学31地址簿程序一个人的地址通常包括以下信息:姓名,省份,城市,街道,门牌号,邮政编码采用过程化的程序设计方法,使用简单变量存储,则存储两个人地址的代码如下2.2 类与对象2.2.3 数据成员(续)例2-4Java语言程序设计(第2版),郑莉,清华大学32publicstaticvoidmain(Stringargs)Stringname1,name2;intgateNumber1,gateNumber2;StringstreetName1,streetName2;Stringcity1,city2;Stringprovince1,province2;StringpostalCode1,postalCode2;name1=ZhangLi;gateNumber1=15;streetName1=TsinghuaEastRoad;city1=Beijing;province1=“Beijing;postalCode1=100084;name2=LiHong;gateNumber2=2;streetName2=BeiNong;city2=Beijing;province2=Beijing;postalCode2=102206;/.dosomethinginteresting2.2 类与对象2.2.3 数据成员(续)例2-4Java语言程序设计(第2版),郑莉,清华大学33采用面向对象的程序设计方法,则需要首先声明Address类如下publicclassAddressStringname;intgateNumber;StringstreetName;Stringcity;Stringprovince;StringpostalCode;/方法成员略2.2 类与对象2.2.3 数据成员(续)例2-4Java语言程序设计(第2版),郑莉,清华大学34主方法改写如下publicstaticvoidmain(Stringargs)Addressaddress1=newAddress(),address2=newAddress();address1.name=“ZhangLi;address1.streetNumber=15;address1.streetName=“TsinghuaEastRoad;address1.city=“Beijing;address1.province=“Beijing;address1.postalCode=“100084;address2.name=“LiHong;address2.streetNumber=2;address2.streetName=“BeiNong;address2.city=“Beijing;address2.province=“Beijing;address2.postalCode=“102206;/.dosomethinginteresting2.2 类与对象2.2.3 数据成员(续)例2-4Java语言程序设计(第2版),郑莉,清华大学35类变量也称为静态变量,声明时需加static修饰符不管类的对象有多少,类变量只存在一份,在整个类中只有一个值类初始化的同时就被赋值适用情况类中所有对象都相同的属性经常需要共享的数据系统中用到的一些常量值引用格式.2.2 类与对象2.2.3 数据成员(续)类变量Java语言程序设计(第2版),郑莉,清华大学36对于一个圆类的所有对象,计算圆的面积时,都需用到的值,可在Circle类的声明中增加一个类属性PIpublicclassCirclestaticdoublePI=3.14159265;intradius;当我们生成Circle类的实例时,在每一个实例中并没有存储PI的值,PI的值存储在类中2.2 类与对象2.2.3 数据成员(续)例2-5Java语言程序设计(第2版),郑莉,清华大学37对类变量进行测试publicclassClassVariableTesterpublicstaticvoidmain(Stringargs)Circlex=newCircle();System.out.println(x.PI);System.out.println(Circle.PI);Circle.PI=3.14;System.out.println(x.PI);System.out.println(Circle.PI);测试结果3.141592653.141592653.143.142.2.3 数据成员(续)例2-5运行结果2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学38声明一个Point类,有两个私有变量保存点坐标,一个类变量保存已有点的个数publicclassPointprivateintx;privateinty;publicstaticintpointCount=0;publicPoint(intx,inty)this.x=x;this.y=y;pointCount+;2.2 类与对象2.2.3 数据成员(续)Point.javaJava语言程序设计(第2版),郑莉,清华大学39测试类ex2_4classex2_4publicstaticvoidmain(Stringargs)Pointp=newPoint(1,1);System.out.println(p.pointCount);Pointq=newPoint(2,2);System.out.println(q.pointCount);System.out.println(q.pointCount=Point.pointCount);System.out.println(Point.pointCount);2.2 类与对象2.2.3 数据成员(续)Point类测试Java语言程序设计(第2版),郑莉,清华大学40测试结果12true22.2 类与对象2.2.3 数据成员(续)Point类测试结果Java语言程序设计(第2版),郑莉,清华大学41实例变量和类变量都可被声明为finalfinal实例变量必须在每个构造方法结束之前赋初值,以保证使用之前会被初始化final类变量必须在声明的同时初始化2.2 类与对象2.2.3 数据成员(续)final修饰符Java语言程序设计(第2版),郑莉,清华大学422.2.4 方法成员方法成员定义类的行为一个对象能够做的事情我们能够从一个对象取得的信息可以没有,也可以有多个;一旦在类中声明了方法,它就成为了类声明的一部分分为实例方法和类方法2.2 类与对象Java语言程序设计(第2版),郑莉,清华大学43声明格式public|protected|privatestaticfinalabstractnativesynchronized返回类型方法名(参数列表)throwsexceptionList方法体2.2 类与对象2.2.4 方法成员(续)声明格式Java语言程序设计(第2版),郑莉,清华大学46方法调用给对象发消息意味着调用对象的某个方法从对象中取得信息修改对象的状态或进行某种操作进行计算及取得结果等调用格式.(参数列表)称点操作符“.”前面的为消息的接收者(receiver)参数传递值传递:参数类型为基本数据类型时引用传递:参数类型为对象类型或数组时2.2 类与对象2.2.4 方法成员(续)方法调用Java语言程序设计(第2版),郑莉,清华大学47实例方法表示特定对象的行为声明时前面不加static修饰符使用时需要发送给一个类实例2.2 类与对象2.2.4 方法成员(续)实例方法Java语言程序设计(第2版),郑莉,清华大学48在Circle类中声明计算周长的方法publicclassCirclestaticdoublePI=3.14159265;intradius;publicdoublecircumference()return2*PI*radius;由于radius是实例变量,在程序运行时,Java会自动取其接收者对象的属性值也可将circumference方法体改为:return2*PI*this.radius;关键字this代表此方法的接收者对象2.2 类与对象2.2.4 方法成员(续)例2-6Java语言程序设计(第2版),郑莉,清华大学49方法调用测试publicclassCircumferenceTesterpublicstaticvoidmain(Stringargs)Circlec1=newCircle();c1.radius=50;Circlec2=newCircle();c2.radius=10;doublecircum1=c1.circumference();doublecircum2=c2.circumference();System.out.println(Circle1hascircumference+circum1);System.out.println(Circle2hascircumference+circum2);2.2 类与对象2.2.4 方法成员(续)例2-6Java语言程序设计(第2版),郑莉,清华大学50运行结果Circle1hascircumference314.159265Circle2hascircumference62.831853说明在使用实例方法时,需要将其发送给一个实例对象(也称给对象发送一条消息),radius的值即是接收者对象的值在执行c1.circumference()时,radius的值为c1的radius属性值;在执行c2.circumference()时,radius的值为c2的radius属性值2.2 类与对象2.2.4 方法成员(续)例2-6运行结果Java语言程序设计(第2版),郑莉,清华大学51在Circle类及Rectangle类中声明计算面积的方法area()public class Circle static double PI=3.14159265;int radius;public double circumference()return 2*PI*radius;public double area()return PI*radius*radius;public class Rectangle double width;double height;public double area()return width*height;2.2 类与对象2.2.4 方法成员(续)例2-7Java语言程序设计(第2版),郑莉,清华大学52声明测试类,对Circle类及Rectangle类的area()方法进行测试publicclassAreaTesterpublicstaticvoidmain(Stringargs)Circlec=newCircle();c.radius=50;Rectangler=newRectangle();r.width=20;r.height=30;System.out.println(Circlehasarea+c.area();System.out.println(Rectanglehasarea+r.area();2.2 类与对象2.2.4 方法成员(续)例2-7Java语言程序设计(第2版),郑莉,清华大学53运行结果Circlehasarea7853.981625Rectanglehasarea600.0说明不同的类中可以声明相同方法名的方法使用时,系统会根据接收者对象的类型找到相应类的方法2.2 类与对象2.2.4 方法成员(续)例2-7运行结果Java语言程序设计(第2版),郑莉,清华大学54带参数的方法举例:在Circle类中增加方法改变圆的半径publicclassCirclestaticdoublePI=3.14159265;intradius;publicdoublecircumference()return2*PI*radius;publicdoublearea()returnPI*radius*radius;publicvoidenlarge(intfactor)radius=radius*factor;2.2 类与对象2.2.4 方法成员(续)例2-8Java语言程序设计(第2版),郑莉,清华大学55测试类publicclassEnlargeTesterpublicstaticvoidmain(Stringargs)Circlec1=newCircle();c1.radius=50;Circlec2=newCircle();c2.radius=10;System.out.println(Circle1的周长:+c1.circumference();System.out.println(Circle2的周长:+c2.circumference();c2.enlarge(4);System.out.println(Circle2扩大后的周长:+c2.circumference();2.2 类与对象2.2.4 方法成员(续)例2-8Java语言程序设计(第2版),郑莉,清华大学56运行结果Circle1的周长:314.159265Circle2的周长:62.831853Circle2扩大后的周长:251.3274122.2 类与对象2.2.4 方法成员(续)例2-8运行结果Java语言程序设计(第2版),郑莉,清华大学57以对象作为参数的方法举例:在Circle类中增加fitsInside方法判断一个圆是否在一个长方形内,需要以Rectangle类的对象作为参数publicclassCirclestaticdoublePI=3.14159265;intradius;publicdoublecircumference()return2*PI*radius;publicvoidenlarge(intfactor)radius=radius*factor;publicbooleanfitsInside(Rectangler)return(2*radiusr.width)&(2*radiusr.height);2.2 类与对象2.2.4 方法成员(续)例2-9Java语言程序设计(第2版),郑莉,清华大学58测试类public class InsideTester publicstaticvoidmain(Stringargs)Circlec1=newCircle();c1.radius=8;Circlec2=newCircle();c2.radius=15;Rectangler=newRectangle();r.width=20;r.height=30;System.out.println(Circle1fitsinsideRectangle:+c1.fitsInside(r);System.out.println(Circle2fitsinsideRectangle:+c2.fitsInside(r);2.2 类与对象2.2.4 方法成员(续)例2-9Java语言程序设计(第2版),郑莉,清华大学59运行结果Circle1fitsinsideRectangle:trueCircle2fitsinsideRectangle:false2.2 类与对象2.2.4 方法成员(续)例2-9运行结果Java语言程序设计(第2版),郑莉,清华大学60类方法也称为静态方法,表示类中对象的共有行为声明时前面需加static修饰符不能被声明为抽象的类方法可以在不建立对象的情况下用类名直接调用,也可用类实例调用2.2 类与对象2.2.4 方法成员(续)类方法Java语言程序设计(第2版),郑莉,清华大学61将摄氏温度(centigrade)转换成华氏温度(fahrenheit)转换公式为fahrenheit=centigrade*9/5+32除了摄氏温度值及公式中需要的常量值,此功能不依赖于具体的类实例的属性值,因此可声明为类方法转换方法centigradeToFahrenheit放在类Converter中publicclassConverterpublicstaticintcentigradeToFahrenheit(intcent)return(cent*9/5+32);方法调用Converter.centigradeToFahrenheit(40)2.2 类与对象2.2.4 方法成员(续)例2-10Java语言程序设计(第2版),郑莉,清华大学62从Java5开始,可以在方法的参数中使用可变长参数可变长参数使用省略号表示,其实质是数组例如,“Strings”表示“Strings”对于可变长参数的方法,传递给可变长参数的实际参数可以是多个对象,也可以是一个对象或者是没有对象2.2 类与对象2.2.4 方法成员(续)可变长参数Java语言程序设计(第2版),郑莉,清华大学63staticdoublemaxArea(Circlec,Rectangle.varRec)Rectanglerec=varRec;for(Rectangler:rec)publicstaticvoidmain(Stringargs)Circlec=newCircle();Rectangler1=newRectangle();Rectangler2=newRectangle();System.out.println(maxareaofc,r1andr2is+maxArea(c,r1,r2);System.out.println(maxareaofcandr1is+maxArea(c,r1);System.out.println(maxareaofcandr2is+maxArea(c,r2);System.out.println(maxareaofonlycis+maxArea(c);2.2 类与对象2.2.4 方法成员(续)例2-11Java语言程序设计(第2版),郑莉,清华大学64包是一组类的集合一个包可以包含若干个类文件,还可包含若干个包包的作用将相关的源代码文件组织在一起类名的空间管理,利用包来划分名字空间,便可以避免类名冲突提供包一级的封装及存取权限2.2 类与对象2.2.5 类的组织包的概念Java语言程序设计(第2版),郑莉,清华大学65包的命名每个包的名称必须是“独一无二”的Java中包名使用小写字母表示命名方式建议将机构的Internet域名反序,作为包名的前导若包名中有任何不可用于标识符的字符,用下划线替代若包名中的任何部分与关键字冲突,后缀下划线若包名中的任何部分以数字或其他不能用作标识符起始的字符开头,前缀下划线2.2 类与对象2.2.5 类的组织包的概念Java语言程序设计(第2版),郑莉,清华大学66编译单元与类空间一个Java源代码文件称为一个编译单元,由三部分组成所属包的声明(省略,则属于默认包)Import(引入)包的声明,用于导入外部的类类和接口的声明一个编译单元中只能有一个public类,该类名与文件名相同,编译单元中的其他类往往是public类的辅助类,经过编译,每个类都会产一个class文件利用包来划分名字空间,便可以避免类名冲突2.2 类与对象2.2.5 类的组织包的概念(续)Java语言程序设计(第2版),郑莉,清华大学67包的声明命名的包(命名的包(Named Packages)例如:packageMypackage;默认包(未命名的包)默认包(未命名的包)不含有包声明的编译单元是默认包的一部分2.2 类与对象2.2.5 类的组织包的概念(续)Java语言程序设计(第2版),郑莉,清华大学68包与目录Java使用文件系统来存储包和类包名就是文件夹名,即目录名目录名并不一定是包名用javac编译源程序时,如遇到当前目录(包)中没有声明的类,就会以环境变量classpath为相对查找路径,按照包名的结构来查找。因此,要指定搜寻包的路径,需设置环境变量classpath2.2 类与对象2.2.5 类的组织包的概念(续)Java语言程序设计(第2版),郑莉,清华大学69引入包为了使用其它包中所提供的类,需要使用import语句引入所需要的类Java编译器为所有程序自动引入包java.langimport语句的格式importpackage1.package2.(classname|*);其中package1.package2表明包的层次,它对应于文件目录classname则指明所要引入的类名如果要引入一个包中的所有类,则可以使用星号(*)来代替类名2.2 类与对象2.2.5 类的组织包的概念(续)Java语言程序设计(第2版),郑莉,清华大学70静态引入Java5新特性在Java5之前,通过类名使用类的静态成员。例如,Math.PI,Math.sin(double)如果在程序中需要多次使用静态成员,则每次使用都需要加上类名静态引入分为两种:单一引入和全体引入单一引入是指引入某一个指定的静态成员,例如:importstaticjava.lang.Math.PI;全体引入是指引入类中所有的静态成员,例如:importstaticjava.lang.Math.*;2.2 类与对象2.2.5 类的组织包的概念(续)Java语言程序设计(第2版),郑莉,清华大学71importstaticjava.lang.Math.PI;publicclassCircleintradius;publicdoublecircumference()return2*PI*radius;2.2 类与对象2.2.5 类的组织包的概念(续)例2-12Java语言程序设计(第2版),郑莉,清华大学72类的访问控制类的访问控制只有public(公共类)及无修饰符(缺省类)两种访问权限符与访问能力之间的关系如表类型无修饰public同一包中的类同一包中的类yesyes不同包中的类不同包中的类noyes2.2 类与对象2.2.6 类的访问控制Java语言程序设计(第2版),郑莉,清华大学73类成员的访问控制公有(public)可以被其他任何对象访问(前提是对类成员所在的类有访问权限)保护(protected)只可被同一类及其子类的实例对象访问私有(private)只能被这个类本身访问,在类外不可见默认(default)仅允许同一个包内的访问;又被称为“包(package)访问权限”2.2 类与对象2.2.6 类的访问控制Java语言程序设计(第2版),郑莉,清华大学74类型private无修饰protectedpublic同一类yesyesyesyes同一包中的子类noyesyesyes同一包中的非子类noyesyesyes不同包中的子类nonoyesyes不同包中的非子类nononoyes2.2 类与对象2.2.6 类的访问控制(续)Java语言程序设计(第2版),郑莉,清华大学75对例2-6中的Circle类声明进行修改,给实例变量加上private修饰符publicclassCirclestaticdoublePI=3.14159265;privateintradius;publicdoublecircumference()return2*PI*radius;2.2 类与对象2.2.6 类的访问控制(续)例2-13Java语言程序设计(第2版),郑莉,清华大学76再编译CircumferenceTester.javapublicclassCircumferenceTesterpublicstaticvoidmain(Stringargs)Circlec1=newCircle();c1.radius=50;Circlec2=newCircle();c2.radius=10;doublecircum1=c1.circumference();doublecircum2=c2.circumference();System.out.println(Circle1hascircumference+circum1);System.out.println(Circle2hascircumference+circum2);2.2 类与对象2.2.6 类的访问控制(续)例2-13Java语言程序设计(第2版),郑莉,清华大学77编译时会提示出错在编译语句“c1.radius=50;”及“c2.radius=10;”时会提示存在语法错误“radiushasprivateaccessinCircle”说明由于在Circle类声明中变量radius被声明为private,因此在其它类中不能直接对radius进行存取如果要允许其它类访问radius的值,就需要在Circle类中声明相应的公有方法。通常有两类典型的方法用于访问属性值,get方法及set方法2.2 类与对象2.2.6 类的访问控制(续)例2-13编译Java语言程序设计(第

    注意事项

    本文(第2章 类与对象的基本概念(精品).ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开