---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
多态:事物的多种体现形态
体现:父类引用指向自己的子类对象 Fu f = new zi(); f.方法();
好处:极大提高程序的扩展性
前提:必须是类与类之间有关系,继承(extends)或者是实现(implements)
通常存在覆盖,只能使用父类的引用访问父类中的成员
关键字:instanceof 所属类型判断,于判断关键字相连,使用条件是当子类类型有限,选项少的情况下.
多态中,非静态方法的特点:
编译时: 参阅引用型变量所属的类中是否有调用的方法, 没有则编译失败
运行时:参阅对象所属的类中是否有调用的方法
简单概括:成员函数在多态调用时,编译看左边,运行看右边 Fu f = new zi()
Object,超类
所有对象的直接或者间接父类,该类定义的是所有对象都具备的功能.
equals方法: 比较类的内存地址值,一般会被复写
内部类:将一个类定义在另一个类里面,里面的类称为内部类(嵌套类)
内部类定义在外部类的成员位置上:可以被修饰符修饰.
pirvate:将内部类在外部封装
如果非私有,可以在外部其他类中直接建立内部类对象:
外部类名.内部类名 变量名 = 外部类对象.内部类对象;
例:Outer.Inner in = new Outer().new Inner();
被static修饰的内部类只能访问外部类中的静态成员。
外部其他类中直接访问static内部类的非静态成员: new Outer.Inner().function();
当内部类中定义了静态成员,该内部类必须是静态的
内部类定义在局部位置上:可以直接访问外部类中的成员.同时可以访问所在局部中的局部变量,但必须是被final修饰的。
访问规则:
1,内部类可以直接访问外部类中的成员,包括私有,之所以可以直接访问,是因为内部类中持有一个外部类的引用
格式:外部类名.this
2外部类要访问内部类,必须建立内部类的对象
匿名内部类:
定义的前提:必须实现接口 或者继承一个类
匿名内部类就是一个匿名子类对象(带内容的子类对象).定义的方法最好不要超过3个
格式: new 父类或接口(){定义子类内容;}.方法
Throw
|__Error (错误,停止程序)
|__Exception(异常,调试后继续运行)
异常是对问题的描述,把问题封装成对象,throwable 所有类及监理的对象都具备可抛性
好处:将问题进行封装,将正常代码和问题代码分离,提高阅读性
调用到抛出异常的功能时,抛出几个处理几个
一个try对应多个catch,多个catch中父类catch放在最下面,catch内需要定义针对性的处理方式,不要简单定义printStackTrace语句
printStackTrace:JVM默认使用,打印异常的堆栈跟踪信息
/异常名称 异常信息 异常出现位置
printStackTrace(PrintStream s)
通常用该方法将异常内容保存在日志文件中,以便查阅
在函数上声明异常,便于提高安全性,让调用者处理,不处理就编译失败
try
{
需要检测的代码;
}
catch(异常类 变量)
{
异常处理代码;
}
finally
{
一定会执行的代码;
}
Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)
对多异常的处理
1:声明异常时,建议声明更为具体的异常,这样可以处理的更具体
2:声明几个异常,就有几个catch块,如果多个catch块中出现继承关系,父类异常catch块放在最下面
自定义异常:异常自定义 必须继承Exception是异常体系的特点
异常类和异常对象都要被抛出,具备可抛性是 throwable体系中的独有特点
throws: 使用在函数上连接异常类,可以连接多个,用逗号(,)隔开
throw:使用在函数内,连接着异常对象
自定义异常时,如果该异常发生无法继续进行运算,就让该异常继承Runtime异常
异常区别:
1,编译时被检测的异常,能处理,处理完程序继续运行的,继承Exception
2,编译时不被检测:不能处理,让程序停止,继承运行时异常,Runtime Exception以及它的子类
异常在子父类覆盖的体现:
1,子类在覆盖父类时,如果父类的方法抛出异常,子类的覆盖方法只能抛出父类的异常或者该异常的子集
2,如果父类方法抛出多个异常,子类在覆盖方法时,只能抛出父类异常的子集
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不能抛出异常
如果子类方法发生异常,就必须进行try catch 处理,绝对不能抛出
4,如果函数声明了异常,调用者需要进行处理,处理方法可try可throw
当函数内有throw抛出异常对象,并未进行处理,要在函数上声明.如果抛出的Runtime,可以不用声明
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------