多态
一个对象的实际类型是确定的
引用类型的指向就不确定了(父类的引用指向子类)
注意事项:1. 多态是方法的多态,属性没有
2. 父类与子类要有关系,有联系
3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象
不能被重写的
- static 方法,属于类,不属于实例
- final常量
- private方法
父类引用指向子类时
如果方法重写了那就调子类的,否则父类的
,也无法直接调用子类特有的方法,需强转
子类引用能调的都是自己的或继承的
instance of 引用类型转换
判断两个类是否存在父子关系
子类转父类可能会丢失一些方法
多态可方便方法的调用,减少重复的代码
static
当某一属性很多类都需要调用时可以static
静态代码块
匿名代码块
构造方法
静态导入包
final修饰类无子类
抽象类
abstract
抽象方法 只有方法名,没有方法的实现
抽象类的方法必须由他的子类实现
- 不能new抽象类,只能考子类去实现它,是一种约束
- 抽象类可以写普通方法,抽象方法必须在抽象类里
接口
只有规范,约束,自己无法写方法
约束和实现分离:面向接口编程
通过implements实现接口
实现了接口类必须重写接口中的方法
从侧面实现多继承
接口里的属性默认常量
接口作用
- 约束
- 定义一些方法,让不同的人实现
- 方法都是public abstract
- 所有属性都是public static final
- 接口不能被实例化,没有构造方法
- 一个实现类可同时实现多个接口
- 接口中的方法必须被重写
内部类
通过外部类来实例化内部类
可以获取外部类的私有属性方法
静态内部类无法访问非静态外部属性方法
一个Java类中可以有多个class文件,但那只能有一个public class
class可以在public class内,可以在public class外,可以在方法内(局部内部类),匿名内部类不用将实例化对象保存到变量中
异常机制
Error
Exception
区别:Error通常比较严重
Exception通常是可以被程序处理的,并且在程序中尽可能的去处理这些异常
异常处理机制
抛出
捕获
异常处理五个关键字
try catch finally throw throws
finally 主要进行一些善后工作,可以不写
捕获多个异常时,大的放后边,从小到大捕
crtl+alt+t
throw/throws
主动抛出异常,一般用在方法中
假设方法中处理不了这个异常则主动抛出
可自定义异常