一、
静态代码块
static{
}
构造代码块
普通代码块
{
}
构造方法
静态代码块随类型加载到方法区时被首先执行,且程序执行过程中只执行一次
构造代码块和构造方法没创建一次对象就被调用一次。
二、packege、import
1.package包名:必须位于第一行
2.位于不同包的类需要引入,表面这个类的位置,具体语法是全限定名(也叫全路径名)
包名.类名。
当同一个包中引入不同类时,可以使用*表示引用这个包的所有类,比较省事。
import不能同时引入同名类
对于java.lang包里的类,jvm会默认给该类引入包名。
三、继承
类和类之间的关系
1.A is B
2.里氏替换原则:子类对象可以当作父类对象去用
pulic class A{
}
public class B extends A{
}
子类可以从父类继承属性和行为
父类,基类、超类
子类,派生类
java的类单继承,因此java号称单继承
单继承,即一个类只能有一个直接父类
4.java中唯一一个没有父类的类Object,他是所有java类的“始祖”
一个类没有明确写出直接父类,那么他就直接继承自Object
Everything is Object万物皆对象
五、重写
1、返回值类型如果是void、基本数据类型,重写前后必须一致
返回值类型如果是引用数据类型,重写后返回值类型要与原来一致或时原来的子类
2、重写前后方法名要保持一致
3、参数列表一致
4、静态方法不能被重写
六、子类对象创建的过程
需要顺着继承关系向上找,先调用“爷爷”类的构造方法,再调用父类的构造方法,在调用子类的构造方法。即先有父对象,才有子对象。
七继承关系下,静态代码块、构造代码块、构造方法执行次数和顺序
newB();
newB();
执行效果
八、super
super.属性和行为(调用父类的)
super().
子类所有构造方法第一行必须调用父类构造方法,当程序没有明确写出时,jvm会默认再子类构造方法第一行加一个super().即调父类的无参构造方法。也可以手动指定调用父类的构造方法。
即手动再第一行加入一个super()