---------------------- android培训、java培训、期待与您交流! ----------------------
一、多态
多态的体现形式:父类的引用指向了自己的子类对象;父类的引用也可以接受自己的子类对象。
多态的前提:必须是类与类(接口)之间有关系(继承/实现),一般需存在覆盖。
多态的利处:多态的出现提高了程序的扩展性。
多态的弊端:只能使用父类的引用来访问父类中的成员。
重点记忆:
多态中成员函数的特点:(静态多态性与动态多态性)
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过。如果没有,则编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法,如果有,可以运行。如果没有,则会报错。
简单总结:(针对 father f=new son();这种形式)成员函数在多态调用时,编译看左边,运行看右边;在多态中成员变量特点:无论编译或运行,都参考左边(引用型变量所属的类);多态中,静态成员函数无论编译或运行,都参考左边。
二、toString方法与equals方法
toString方法是Java中Object类的方法,很多类都重写了该方法,在使用时,我们可以按需要重写该方法。该方法返回对象的状态信息。
toString原型:public String toString()
equals方法也是Object类中的方法,很多类中同样重写了该方法,一般情况,我们重写equals方法是为了比较两个对象的内容是否相等。
equals原型:public boolean equals(Object obj){return (this.obj);}
三、内部类
访问规则:
1.内部类可以直接访问外部类中的成员,包括私有;
2.外部类如需访问内部类成员,必须建立内部类的对象。
外部其他类简历对象访问内部类格式:Outer.Inner in=new Outer().new Inner();
访问格式:
1.当内部类定义在外部类的成员位置上,并且非私有,可以在外部其他类中建立内部类对象:外部类名.内部类名.变量名=外部类对象.内部类对象。
2.当内部类在成员位置上时,可以被成员修饰符修饰,如:private(这样可以将内部类在外部类中进行封装)、static(使内部类具备static特性)。
3.当内部类被static修饰后,只能访问外部其他类的静态成员,产生访问局限。
注意:当内部类中定义了静态成员时,该内部类也必须是静态的;当外部类中的静态方法访问内部类时,内部类也必须是静态的。
什么时候使用内部类?
当描述事物时,事物的内部还有事物,该事物用内部类来描述,因为内部事物 在使用外部类中的事物内容。
匿名内部类:
1.匿名内部类是内部类的简写形式。
2.定义匿名内部类的前提:内部类必须继承一个类或者实现一个借口。
3.匿名内部类格式:new 父类或借口(){定义子类内容}.方法();
4.匿名内部类相当于一个匿名子类对象,只是看起来这个对象内容比较多,可以理解为带有内容的对象。
5.一般来说,匿名内部类中定义的方法不超过三个。
四、异常
异常处理的一般格式:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码(处理方式)
}
finally
{
一定会被执行的代码(一般用于关闭资源)
}
一个try块可以对应多个catch块,finally不是必须写的。如果只有try块和finally块,表示这个异常不解决,如果这个异常是检测时异常(非RuntimeException型),那么这个异常必须被声明。
异常的体系:
Throwable
|--Error
|--Exception
|--RuntimeException
异常体系的特点:异常体系中所有的类以及建立的对象都具备可抛性,即可以被throw和throws操作。
多异常的处理注意:
1.声明异常时,尽量声明更为具体的异常,这样处理时也可以更为具体。
2.声明了几个异常,就对应几个catch块;异常如出现了继承关系,父类异常的catch块放在最后。
throws与throw的区别:
throws定义在函数上,用于抛出异常类,多个可以使用“,”隔开;throw用于函数内部,用于抛出异常对象。
异常有两种:
编译时期被检测异常:该异常如在编译时期未处理(try、throws),编译失败;
运行时异常(编译时不检测):编译时不处理,直接修正代码。
RuntimeException:
Exception的特殊子类异常,在函数内抛出此异常或其子类时,函数上可以不做声明,编译能够通过;如果声明了该异常,调用者可以不做处理,编译也通过。
一般情况,当函数内有throw抛出异常对象时,并且没有对其进行try处理,必须要在函数上声明throws,否则编译失败,但是如果抛出的是RuntimeException类型异常,可以不做声明。
异常在子父类覆盖中的体现:
1.子类覆盖父类方法时,如果父类的方法抛出了异常,那么子类的覆盖方法也必须抛出父类的异常或该异常的子类。
2.如果父类抛出了多个异常,那么子类在覆盖方法时,只能抛出父类异常的子集。
3.如果父类或者被实现接口中没有异常抛出,那么子类在覆盖方法时也不可以抛出异常。如果子类发生了异常,就必须在内部进行try处理,绝对不能抛出。
异常的好处:
1.将问题进行封装(体现了java面向对象思想)。
2.将正常流程代码与问题代码相分离,便于阅读。
异常处理的原则:
1.处理的方式有两种:try、throws。
2.调用到抛出异常的功能时,抛出几个就处理几个。
3.当出现多个catch块时,父类异常的catch块放到最下面。
4.catch块内,要给出有针对性的处理方式。如果本功能处理不了,可以再次抛出。
五、包
利处:对类文件进行分类管理,给类提供了多层命名空间(报名.类名),java的一种封装形式。
注意:
1.import导入的是包中的类,如需导入具体的类可以用以下形式导入:import 包名.类名;
2.打包语句package写在引入包语句import的前面;他们都在类声明语句的上面;
扩展:权限修饰符的不同作用域:
权限 public > protected > default > private
同一个类中 OK OK OK OK
同一个包中 OK OK OK
子类 OK OK
不同包 OK
jar包:利处:
1.方便项目携带。
2.便于使用,只要在classpath中设置好jar包路径即可。
3.数据库驱动SSH框架等都是以jar包形式体现。
---------------------- android培训 、 java培训、期待与您交流!----------------------