java中的一些小知识
- java在执行的时候先执行静态代码块>匿名代码块>构造方法,静态的代码块是随着类的加载而加载的
- 子类实例化的时候如果父类没有初始化会先对父类进行初始化,在初始化子类,也就是先执行父类的构造方法,在执行子类的构造方法
- 定义了有参构造的时候,无参构造必须被显式定义
- 通过finnal定义的类不能被继承
- super()与this()为初始化父类与当前类的操作,两者必须被定义在第一行,故两者不能被同时显式使用,两者会产生冲突
- 父类的引用可以指向子类的实例,即向上转型
- 子类可以直接进行向上转型,此时声明的对象可以直接调用父类的方法,但不能调用子类独有的方法,但可以调用被子类重写的父类方法,此时使用的是子类的方法,不会调用父类的同名方法
- 重写与多态只针对方法,不针对属性
- 重载针对方法,必须满足参数不一样,返回值也可以不一样
- public>protected>default>private
- 抽象类只定义方法的约束,原则上不定义方法的具体实现,但也可以对方法进行实现,接口完全只能定义方法的约束
- 继承了抽象类的子类必须实现抽象类的所有方法
- 抽象类不能被实例化
- 存在抽象方法的类必须为抽象类,抽象类中可以定义普通方法
- 抽象类只能单继承
- 接口中所有方法的定义都是抽象的,即public abstract void test(){}
- 一个类可以实现多个接口,实现了接口的类必须实现其中的所有方法
- 向下转型可能导致精度损失