面向对象之多态
1. 前提:继承+重写
2. 口诀1:父类引用指向子类对象
解释:父类类型的引用类型变量保存的是子类类型的对象的地址值
2.口诀2:编译看左边,运行看右边
解释:编译时要看父类是否定义了这个资源,运行时使用的是子类的功能
3.资源使用情况
成员变量使用的是父类的
成员方法使用的是父类的方法定义,子类的方法体
如果多态对象调用的是子类没有重写过的方法,方法定义与方法体使用的都是父类的,所以这个不符合多态的前提,直接使用纯纯的父类对象调用即可
静态资源属于类资源,随着类的加载而加载,只会加载一次,优先于对象进行加载,可以通过类名直接调用,被全局所有对象共享,所以静态不存在重写的现象,在哪个类定义,就属于哪个类的资源
我们现在学习的多态,把自己看作是父类类型,参考“花木兰替父从军”
异常
1. 异常的继承结构
异常层次结构中的根是Throwable
Error:目前我们编码解决不了的问题
Exception:异常
编译异常:未运行代码就报错了,强制要求处理
运行时异常:运行代码才报错,可以通过编译,不强制要求处理
2.异常的解决方案
捕获处理try-catch–自己解决
向上抛出throws–交给别人解决
不能直接把异常抛给main(),因为调用main()是JVM,没人解决了
抽象abstract
1.抽象类
抽象类是被abstract修饰的类
抽象类对其中的方法不做限制:全普/全抽/半普半抽
抽象类不可以实例化–创建对象
如果一个子类继承了一个抽象父类,有两种解决方案:
继续抽象 / 实现抽象父类的所有抽象方法,变成普通子类
2.抽象方法
抽象方法是被abstract修饰的方法
抽象方法没有方法体{},以分号结束