还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
DaylO总结、多态的特点
1、组员变量1当在子父类中出现了相似的非私有组员变量时,在多态调用中的特点在编译时参照引用型变量所属类中与否有调用的组员变量,假如有编译通过,假如没有编译失败在运行时参照引用型变量所属的类中的组员简朴一句话对于组员变量无论是编译还是运行都参照引用型变量所属类中的组员变量也就是说组员变量看等号左边、组员函数2当子父类中出现一模同样的函数时,在多态调用中的特点在编译时参照引用型变量的所属的类中与否有调用的组员函数在运行时参照的是对象所属的类中与否有调用的组员函数原因是编译时期应当参照父类,运行时期应当参照子类由于组员函数上有一种特点覆盖简朴一句话对于组员函数,编译看左边,运行看右边、静态函数3在编译时期参照引用型变量所属的类中与否调用的静态函数,假如有编译通过,假如没有编译失败在运行时期参照的还是引用型变量所属的类中的静态函数简朴一句话对于静态函数,无论是编译还是运行都看左边总结对于多态组员而言,无论编译还是运行都看左边,只有组员非静态函数,编译看左边,运行看右边,由于覆盖的特性
2、多态的应用代码实现所有类的父类,该类中的措施所有对象都具有Object代码实现Class Demoextends ObjectPrivateint num;Demoint numThis.num=num;一般都会按照对象自身的特点对对象进行比较,例如目前要比较两个对象中Demo null值与否相似}Public booleancompareDemo bReturn this.num=d.num;发现继承已经具有了比较对象的措施,因此没有必要再定义新的措施Demo Ojectcompareclass TeacherprivateString name;private Computercmpt;TeacherString namecmpt=new Computer;this.name=name;public voidprelectthrows NoPlanException//此处冒烟是电脑发生的,能再老师讲课的功能出现这样的异常么?因此抛出的对象不对.,老师只能耽误了讲课的进度,因此此时与否应当定义一种有关讲课进度的类来封装这个问题trycmpt.run;System,out.printlnname+”毕老师讲课catch LanPinExceptione System.out.printlne.getMessage;cmpt.reset;prelect;catch MaoYanExceptione〃这个功能我处理不了,由于冒烟不会了,这时候需要抛出test;//throw e;〃由于处理不了,继续往外抛此时在讲课措施上要申明此处也不能抛出这个异常由于冒烟是电脑运行时的,不是老师讲课的throw newNoPlanException课时无法继续进行;public voidtestSystem.out.println练习;class ExceptionTestpublic static void mainString|]argsTeacher仁new Teacher毕老师try t.prelect;catch NoPlanExceptione System.out.printin换人;〃究竟什么是抛什么处理?/*自己能处理的就处理,处理不了就抛例如着火了,小火的时候自己可以处理,例如灭火器等当火势大了,就处理不了,只能交给消防队,自己要跑了,直接使用就可以了,可是比较的是地址值,不是我们所需的,那就equals Objectequals保留的父类的功能申明,建立自身的比较内容,这就是覆盖Public booleanequalsObject objIf!Object instanceofDenoReturn false;Demo d=Demoobj;向下转型Returnthis.num=d.num;ltk^^J51了多态的特性Public StringtoStringO|Return demo:+num;Class ObjectDemo{Public static void mainString[]argsDemo dl二new Demo4;Demo d2二new Demo4;Sopdl.toStringO;Sopdl;Sopc l.getName;Sopd l.compared2;
4、内部类:将一种类定义在此外一种类的里面的类称为内部类当一种类要直接访问此外一种类的组员时,可以将这个类定义到另一种类里面,称为另一种类的内部类内部类访问的规则
1、内部类可以直接访问外部类中的组员
2、外部类需要创立内部类对象才可以访问内部类中的组员在描述事物时,事物中尚有详细的事物时,并且这个内部事物在访问着外部的事物时这时对这个内部事物的描述,就可以用内部类完毕内部类出于外部类的组员位置上是可以被组员修饰符所修饰的PublicPrivate将内部类私有化时,只能对外提供措施,对内部类的控制Static当内部类中定义了静态的组员时,该内部类必须静态的,否则编译失败代码体现Class OuterStaticint num=4;Static classInner〃内部类,为何要定义内部类?当一种类要直接访问另一种类中的组员时可以将这个类定义到另一类里面Static void show Sopnshowrunn4-num;Public voidmethod Inner in=new Inner;In.,show;Class InnerClassDemo{Public staticvoid mainString[]args//Outer out=new Outer;//out.method;//System.out.printlnnHello World!n;〃当访问一种外部类的内部类时,先由外部类对象再有内部类对象//Outer.Inner in=new Outer.new Inner;//要指明内部类所处的外部类//in.show;〃内部类静态化,要调用的非静态的措施Show;//Outer.Innerin=newOuter.Inner;//in.show;//假如show措施也是静态的,要调用静态的措施show;Outer.Inner.show;
5、匿名内部类没名字的内部类就是内部类的简化写法前提内部类可以继承或者实现一种外部类代码实现格式New父类名or接口名{子类的详细内容}Abstract classAbdsDemoAbstract voidshow1;Abstract voidshow2;Class Outer{Int num=4;New AbsDemo{Void show〃匿名内部类Sop,num==,+num;}.show;Public voidmethod2{AbsDemo a=new AbsDemo;Public voidshow1;Public voidshow2;;A.showlQ;A.show2;//要想调用两个措施,怎么做?起个名称即可当里面有多种措施的时候提议不要写匿名内部类interface Inter{voidshow;class Outer〃补足代码最佳用匿名内部类static Intermethod//为何是Inter类型return newIntcrpublic voidshowSystem.out.printlnnshow run1;;class InnerClassTestpublic staticvoidmainString[]argsOuter.method.show;/*Outer.method:Outer类中有一种method措施,并且这个措施是静态的Outer.method.show会返回一种对象,并且这个对象还可以调用show措施阐明这个对象肯定是Inter类型*/
6、异常是在运行时期发生的不正常状况Java发现不正常的状况都包括着某些常见信息,并将这些信息进行了对象的封装异常这种机制,其实就是java按照面向对象的思想将出现的问题封装成了对象在进行问题分析时,发现问题有诸多种,不过不停向上抽取,最终问题可以归纳为两种,一种是可以针对处理的一种是一般不进行处理的在java中的体现一种是Exception,一种是Error,后者一般针对处理无论是异常还是错误,他们均有名称信息等共性的内容可以继续抽取形成一种父类throwable可抛出Throwable|—Error|—Exception异常和错误均有一种特点其子类的名称的后缀名都是父类名该体系具有一种特殊的特性叫做可抛性,该体系中的类可以被关键字throws抛出该体系中的类产生的对象可以被Throw抛出,简朴说该体系可以被Throws和throw操作Throw和throws的区别Throws定义在函数上,用于申明函数的也许出现的问题,背面跟异常类,可以跟多种,用逗号隔开、Throw:定义在函数内,用于抛出异常对象由于程序的跳转,背面跟的是异常对象If判断和异常处理的区别If判断是将正常代码和异常代码写在一起阅读性极差,异常处理将问题代码和异常处理代码分离代码实现Class Demo(功能的定义着在定义工呢过时,发现该功能轻易由于未知内容的不确定性的出现的问题为了让调用者明确,有也许有问题,需要在函数上对问题进行申明需要一关键字throw异常名Int div(int a,int b)throws Exception//抛出异常是为中明异常问题,让调用者去处理(()If b==OThrow newArithmeticException(除数为零、违反规则)Return a/b;))对异常的针对性处理方式Try(需要被检测的代码;)Cathch(异常类变量)(异常处理代码)Finaly(一定会被执行的代码自定义异常Java将常见的问题都封装成了对象对于自定义项目中出现的问题,java并未给出对应的描述,这时我们就需要按照面向对象的思想自己完毕对问题的描述和封装自定义异常需求在我的程序中,进行除法运算,除数不可认为负数也不可认为0;对这种状况,java中有对应的描述,ArithmcticExccption对于负数,java中没有只有我们自己定义,定义一种类来对异常进行描述Class FuShuExceptionextends ExceptionPrivateint num;FuShuException{}FuShuExceptionString message,int numSupermessage;This.,num=num;Public intgetNum Returnnum;Class DemoIntdivint a,int bthrowsFuShuExceptionIfb0Throw newFuShuException除数不可认为负数函数内抛出异常,函数上一定要标示函数内抛出是什么?函数上就标示什么?对方抛出什么异常,我就处理什么异常Return a/b;Class ExceptionDemo2Public staticvoidmainString[]aths;Demo d=new DemoTryInt num=d.div4,-l;Sopnnum=n+num;CathcFuShuException eSop;e.printStackTrace;SopoverH;自定义应用:异常分两种
1、编译被检测的异常Exception这种异常一般都需要进行针对性的处理
2、运行时发生的异常RuntimeException对于运行时异常一般是不编写针对性的处理方式,假如该异常发生就让程序停止,对程序进行修正由于这种的出现往往已经无法让程序继续运算了class Demointdivint a,int bthrowsArithmeticExceptionif b==Othrow newArithmeticException除数为零”;return a/b;class ExceptionDemo3public staticvoid mainStringl]args;getlndexnull,4publicstaticint getlndexint[]arr,int keyifarr==nun〃进行强健性判断throw newNulIPointerException没有详细的数组;forint x=O;xarr.length;x++{ifarr[x]==key returnx;return-1;publicstaticint getElementint||arr,int indexifan-=nullthrow newNullPointerException没有详细的数组实例;ifindexO||index=arr.lengththrow newAn*ayIndexOutOfBoundsException角标越界”;return arrfindex];异常练习:需求毕老师用电脑上课按照面向对象思想来描述名词提炼法上课过程中出现的问题
1、电脑蓝屏了
2、电脑冒烟了*/class LanPinExceptionextends ExceptionLanPinExceptionStringmessagesupermessage;class MaoYanExceptionextends ExceptionMaoYanExceptionStringmessagesuper message;}class NoPlanExceptionextends ExceptionNoPlanExceptionStringmessagesupermessage;class Computer{private intstate=2;public voidrunthrows LanPinException,MaoYanException ifstate=lthrow newLanPinException电脑蓝屏了”;ifstate==2throw newMaoYanException,电脑冒烟了;System.out.printlnH电脑运行”;public voidresetSystem,out.printing电脑重启”;state=O;。
个人认证
优秀文档
获得点赞 0