- 父类引用指向子类对象
- 把子类转换成父类,向上转型
- 把父类转换成子类,向下转型,需要强转
- 强制转换会丢失精度(子类转为父类可能会丢失方法)
- 方便方法的调用,减少重复的代码!简洁
static关键字详解
静态属性
静态的变量可以在类中被任意共享
静态方法
非静态方法可以直接访问静态方法
静态代码块
是最先执行的,但只执行一次,不可以调用
静态代码块最先执行-->匿名代码块--->构造方法最后执行
匿名代码块的作用:初始化值
静态导入包
可以直接使用Java中方法
抽象类
特点:
-
不能new这个抽象类,只能靠他的子类实现:约束!
-
抽象类中可以有普通方法
-
抽象方法必须在抽象类中
抽象的抽象:约束
接口
- 普通类:只有具体的实现
- 抽象类:具体的实现以及规范 不能new,需要子类来实现
- 接口:只有规范!自己无法写方法~专业的约束 约束和现实分离:面向接口编程~
接口的本质就是契约,像是法律一样,制定好大家要遵守
接口的作用
- 约束
- 定义一些方法,让不同的人实现
- 接口默认的方法都是 public static
- 接口不能被实例化
- 接口可以实现多个接口
- 必须重写接口的方法
内部类
- 可以获得外部类的私有属性
- 需要先new外部类,再用外部类来实例化
- 一个java类中可以有多个class,但是只能有一个public class
异常机制
什么是异常
就是在运行过程中出现的意外,遇到的一些异常问题(Exception)
如:文件找不到、网络连接失败、非法参数
异常体系结构
java把异常当作对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类
在Java API中已经定义了许多异常类,这些异常类分为两大类:Error和Exception
Error和Excepton的区别:
Error通常是灾难性的致命错误,而Exception通常是可以被程序处理的,并且在程序中尽可能的去处理这些异常
异常处理机制
- 抛出异常
- 捕获异常
- 异常处理的五个关键字
try,catch,finally,throw,throws
假设要捕获多个异常,要从小到大排序
自定义异常
-
使用Java内置的类中可以描述在编程时出现的大部分异常情况,除此之外,用户还可以自定义异常,用户自定义异常只需要继承Exception类即可
-
在程序中使用自定义类,大体可以分为以下几种:
-
- 创建自定义异常类
- 在方法中通过throw关键字抛出异常对象
- 如果在当前抛出异常的方法中处理异常,可以用try-catch捕获并处理,否则在方法中声明出通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作
- 在出现异常方法的调用者中捕获并处理异常