




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.包1)包语句包是一种若干松散的类的集合,默认情况下,同一个包中的类可以相互访问。创建包使用package语句,该语句必须是java程序文件的首条语句,指明该源文件定义的类所在的包。格式为:packagepkg1.pkg2.pkg3;例:packagesunrise;packagejava.awt.image;若有packagetom.jiafei;目录结构中必须包含.tomjiafei的结构,如e:javapromtomjiafei,要将文件保存在此目录下,用e:javapromtomjiafeijavac源文件或者javace:javapromtomjiafei源文件,编译方法:(自动生成目录层次结构)javacxxx.java-d.,packagetom;publicclassPackage1inta,b;publicvoidsetab(inti,intj)a=i;b=j;publicvoidprintab()intsum=a+b;System.out.println(a+b=+sum);,packagetom.jiafei;publicclassPackage2intx,y;publicvoidsetxy(inti,intj)x=i;y=j;publicvoidprintxy()intproduct=x*y;System.out.println(x*y=+product);,importtom.Package1;importtom.jiafei.Package2;classE_packagepublicstaticvoidmain(Stringargs)Package1obja=newPackage1();obja.setab(3,5);obja.printab();Package2objb=newPackage2();objb.setxy(3,5);objb.printxy();,2)import语句用import语句可以引入java提供给我们的大约130多个包和自己定义的包中的类。Java.applet包含所有的实现applet的类Java.awt包含抽象窗口工具集中的图形、文本、窗口类Java.awt.image包含抽象窗口工具集中的图像处理类Java.lang包含所有的基本语言类Java.io包含所有的输入输出类J包含所有实现网络功能的类Java.util包含常用类,importjava.applet.Applet;importjava.awt.*;publicclassE_importextendsAppletButtonredbutton;publicvoidinit()redbutton=newButton(这是个红色按钮);redbutton.setBackground(Color.red);add(redbutton);publicvoidpaint(Graphicsg)g.drawString(thisisabutton,30,50);,2.访问权限小结public:所有的类除了内部类(类中类)都能有public说明符。可以从任何java程序的任何对象使用公有类、实例变量或方法。(所有包可见)private:只有同一类中创建的对象才能访问私有变量方法。在其他类中创建的对象不能访问私有变量。(仅在本类可见)protected:在类中被申明为保护的变量可以被同一个包中的该类的对象访问。也能被其子类访问,而不管它们是否在同一个包中。(本类和本类子类可见)缺省访问:如果没有给定修饰符,那就是friendly(友元)的(它不是java的关键字)。拥有友元修饰符的类、变量或方法对同一个包里的所有类来说都是可访问的。(同一包中的各类及其子类可见)对于友好类,在另外一个类中使用友好类创建对象时,要保证他们是在同一个包中。访问权限优先级:public、protected、友好、private,3.类的继承新类可以继承一般类的状态和行为,并根据需要增加自己新的状态和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。java不支持多重继承,子类只能有一个父类,但父类可以有多个子类。1)创建子类格式class子类名extends父类名子类中成员例:classStudentsextendsPeople.,2)子类的继承性(1)子类和父类在同一包中的继承性如果子类和父类在同一个包中,子类继承其父类中不是private的成员变量和成员方法作为自己的成员变量和成员方法。例:,importjava.applet.*;importjava.awt.*;classFatherprivateintmoney;floatweight,height;Stringhead;Stringspeak(Strings)returns;classSonextendsFatherStringhand,foot;,publicclassE_extendsextendsAppletSonboy;publicvoidinit()boy=newSon();boy.weight=1.70f;boy.height=120f;boy.head=一个头;boy.hand=两只手;boy.foot=两只脚;publicvoidpaint(Graphicsg)g.drawString(boy.speak(继承此方法),5,20);g.drawString(boy.head+boy.hand+boy.foot+boy.weight+boy.height,5,40);,(2)子类和父类不在同一包中的继承性如果子类和父类不在同一个包中,子类继承其父类public和protected的成员变量和成员方法作为自己的成员变量和成员方法。不能继承私有和友好成员。例:,/Father.javapackagetom;publicclassFatherintheight;protectedintmoney;publicintweight;publicFather(intm)money=m;protectedintgetMoney()returnmoney;voidsetMoney(intnewMoney)money=newMoney;,/Jerry.javapackagetom.jiafei;importtom.Father;publicclassJerryextendsFatherpublicJerry()super(20);publicstaticvoidmain(Stringargs)Jerryjerry=newJerry();/jerry.height=12;jerry.weight=200;jerry.money=800;intm=jerry.getMoney();/jerry.setMoney(300);System.out.println(m=+m);,3)成员变量的隐藏和方法的重写当在子类中定义的成员和父类中的成员变量同名时,称子类的成员变量隐藏了父类的成员变量。当子类中定义了一个方法,并且该方法的名字、返回类型、参数个数和类型同父类的某个方法,父类的该方法也将被隐藏,此时称父类的方法被重写。例:,importjava.applet.*;importjava.awt.*;classChengjifloatf(floatx,floaty)returnx*y;classXiangjiaextendsChengjifloatf(floatx,floaty)returnx+y;,publicclassE_coverextendsAppletXiangjiasum;publicvoidinit()sum=newXiangjia();publicvoidpaint(Graphicsg)g.drawString(sum=+sum.f(4,6),100,40);,对于子类创建的一个对象,如果子类重写了父类的方法,则运行时调用子类重写的方法,如果未重写,则调用的是从父类继承来的方法。例:,importjava.applet.*;importjava.awt.*;classAreafloatf(floatr)return3.14f*r*r;floatg(floatx,floaty)returnx+y;classCircleextendsAreafloatf(floatr)return3.14f*2.0f*r;,publicclassE_cover2extendsAppletCircleyuan;publicvoidinit()yuan=newCircle();publicvoidpaint(Graphicsg)g.drawString(yuan=+yuan.f(5.0f),5,20);g.drawString(yuan=+yuan.g(2.0f,8.0f),5,40);,注意:重写父类的方法时,不可以降低方法的访问权限4)final类final方法final类不能被继承,一个方法被定义为final则该方法不能重写,一个成员变量被修饰为final就是常量。5)继承的传递性类B继承了类A,类C又继承了类B,这时类C应包含类A和类B的所有成员,以及类C自身成员。这称为类继承的传递性。例:,classAinta1=2;publicinta2=4;publicinta3=6;intgeta3()returna3;voidseta3(inti)a3=i;classBextendsAintb1=3;,classCextendsBintc1=7;voidmethod1()a1+;a2+;seta3(geta3()+1);b1+;c1+;classE_passpublicstaticvoidmain(Stringargs)Cc=newC();c.method1();System.out.println(c.a1+,+c.a2+,+c.geta3()+,+c.b1+,+c.c1);,6)对象的上转型对象设A类是B类的父类,用子类创建一个对象,并把这个对象的引用放到父类的对象中时,如:Aa;a=newB();或Aa;Bb=newB();a=b;称父类对象a是子类对象b的上转型对象。对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。,上转型对象的特点:(1)上转型对象不能操作子类新增的成员变量和方法(2)上转型对象可以操作子类继承或重写的变量和方法(3)如果子类重写了父类的某个方法,对象上转型对象调用时一定是调用这个重写的方法,注意:(1)父类创建的对象和子类对象的上转型对象不是一个含义(2)可以将对象的上转型对象再强制转换到一个子类对象,这时该子类对象又具备该子类所有的属性和功能。(3)不可以将父类创建的对象的引用赋值给子类声明的对象。例:,class类人猿privateintn=100;voidcrySpeak(Strings)System.out.println(s);classPeopleextends类人猿voidcomputer(inta,intb)intc=a*b;System.out.println(c);voidcrySpeak(Strings)System.out.println(*+s+*);,classE_uptraferpublicstaticvoidmain(Stringargs)类人猿monkey=newPeople();monkey.crySpeak(ilovethisgame);Peoplepeople=(People)monkey;puter(10,10);,4.多态性多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。例:,classAnimalvoidcry()classDogextendsAnimalvoidcry()System.out.println(汪汪.);classCatextendsAnimalvoidcry()System.out.println(喵喵.);,classE_duotaipublicstaticvoidmain(Stringargs)Animalanimal;if(Math.random()=0.5)animal=newDog();animal.cry();elseanimal=newCat();animal.cry();,5.abstract类和abstract方法用abstract修饰的类称为抽象类,修饰的方法称为抽象方法。注意:(1)abstract类不能用new运算创建对象,必须产生其子类,由子类创建对象。(2)对于abstract方法只允许声明,不允许实现。(3)如果一个非抽象类是abstract类的子类,它必须具体实现父类的abstract方法。(4)如果一个类含有abstract方法,那么这个类必须用abstract修饰,但abstract类可以没有abstract方法。(5)一个abstract类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能具体行为由子类负责实现。例:,abstractclass图形publicabstractdouble求面积();class梯形extends图形doublea,b,h;梯形(doublea,doubleb,doubleh)this.a=a;this.b=b;this.h=h;publicdouble求面积()return(1/2.0)*(a+b)*h);,class圆形extends图形doubler;圆形(doubler)this.r=r;publicdouble求面积()return(3.14*r*r);,class堆图形底;double高;堆(图形底,double高)this.底=底;this.高=高;void换底(图形底)this.底=底;publicdouble求体积()return(底.求面积()*高)/3.0;,publicclassE_abstractpublicstaticvoidmain(Stringargs)堆zui;图形tuxing;tuxing=new梯形(2.0,7.0,10.7);System.out.println(梯形的面积+tuxing.求面积();zui=new堆(tuxing,30);System.out.println(梯形底的堆的体积+zui.求体积();tuxing=new圆形(10);System.out.println(半径是10的圆的面积+tuxing.求面积();zui.换底(tuxing);System.out.println(圆形底堆的体积+zui.求体积();,6.super关键字1)使用super关键字调用父类的构造方法子类不继承父类的构造方法,但是可以在子类的构造方法中调用父类的构造方法,系统规定用this表示当前类的构造方法,用super表示直接父类的构造方法。实际上子类的构造方法包含自身类的构造方法和直接父类的构造方法。注意:(1)在定义构造方法中,可使用this调用本类的其他构造方法,使用super表示直接父类的构造方法,如果两个都不用,系统自动加上super关键字。(2)调用this或super的构造方法的语句必须放在第一条语句,并且两者最多只能调用其中一条。例:,classpeopleStringname;intage;people()people(Stringname,intage)=name;this.age=age;System.out.println(inpeople);,classstudentextendspeopleStringschool;student()this(null,0,null);System.out.println(instudent1);student(Stringname,intage,Stringschool)super(name,age);this.school=school;System.out.println(instudent2);,classgraduateextendsstudentgraduate()System.out.println(ingraduate);classE_superpublicstaticvoidmain(Stringargs)peoplep=newgraduate();,2)使用super操作被隐藏的成员变量和方法例:classSumintn;floatf()floatsum=0;for(inti=1;i=n;i+)sum=sum+i;returnsum;,classAverageextendsSumintn;floatf()floatc;super.n=n;c=super.f();returnc/n;floatg()floatc;c=super.f();returnc/2;,publicclassE_super2publicstaticvoidmain(Stringa)Averageaver=newAverage();aver.n=100;floatresult1=aver.f();floatresult2=aver.g();System.out.println(result1=+result1);System.out.println(result2=+result2);,7.接口1)接口的声明与使用(1)接口声明interface接口的名字(2)接口体接口体包含常量定义和方法定义两部分,接口中只能进行方法的声明,不允许提供方法的实现。例:interfacePrinttablefinalintMAX=100;voidadd();floatsum(floatx,floaty);,(3)接口的使用一个类通过关键字implements声明自己使用一个或多个接口。如果使用多个接口,用逗号分隔。classAimplementsPrintable,AddableclassDogextendsAnimalimplementsEatable,Sleepable如果一个类使用了某个接口,那么这个类必须实现该接口的所用方法。在类中实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的完全一致。接口中的方法默认是public的,在接口中实现时一定要用public修饰。接口方法返回类型若不是void的,在类中实现方法体时,必须要用return语句;若是void类型类体不用return语句。Java包中也提供了接口。例:接口作为函数参数,将来应该传递实现该接口的类的对象,importjava.applet.*;importjava.awt.*;interfaceComputablefinalintMAX=100;voidspeak(Strings);intf(intx);floatg(floatx,floaty);,classChinaimplementsComputableintxuehao;publicintf(intx)intsum=0;for(inti=1;i=x;i+)sum=sum+i;returnsum;publicfloatg(floatx,floaty)return6;publicvoidspeak(Strings),classJapanimplementsComputableintxuehao;publicintf(intx)return68;publicfloatg(floatx,floaty)returnx+y;publicvoidspeak(Strings),publicclassE_interfaceextendsAppletChinali;Japanhenlu;publicvoidinit()li=newChina();henlu=newJapan();li.xuehao=191819;henlu.xuehao=241848;publicvoidpaint(Graphicsg)g.drawString(xuehao:+li.MAX+li.xuehao+从1到100求和+li.f(100),10,20);g.drawString(xuehao:+henlu.MAX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 面包厂转让合同(标准版)
- 光伏发电质保合同(标准版)
- 2025软件工程自考试题及答案
- 2025-2030中国半无烟煤市场经营风险与未来发展状况评判报告
- 全球生物医药产业政策环境对商业化前景的影响分析报告
- 项目二 任务一 托盘实训(教案)《餐饮服务与管理》(高教版第二版)同步课堂
- 2025科技公司劳动合同范本
- 产品推销活动策划方案
- 全球数字医疗市场行业发展趋势及挑战分析报告2025
- 2025合作聘用合同范本:注册结构工程师合作协议书
- 高三一轮复习课件
- 驾驶员安全教育培训考试试卷含答案
- 2025广东河源市暨南大学附属第五医院急需紧缺人员招聘117人(第二批)笔试参考题库附答案解析
- 2025江苏航空产业集团有限责任公司人才招聘备考试题及答案解析
- 污水处理站运行记录台账范本
- 无人机地下结构探测技术-洞察及研究
- 督查督办培训课件
- 多媒体技术复习题及参考答案
- 北师大版义务教育小学数学教材知识体系整理
- 城市规划的发展与思想变革
- 2023全国大学生数学建模竞赛D题
评论
0/150
提交评论