代码块
1.构造代码块:
1)位置:类里方法外
2)执行时机:创建对象时执行,优先于构造函数
3)作用:提取构造函数的共性功能
2.局部代码块:
1)位置:方法内
2)执行时机:调用方法是执行 顺序执行
3)作用:控制变量作用范围
3.静态代码块:类里方法外,将只需要进行一次初始化操作的放入静态代码块,常用来初始化
构造函数
public class Teacher extends Person{name,id}
1.无参构造 public Teacher(){}
2.含参构造 public Teacher(String name){}
3.全参构造 public Teacher(String name, int id){}
创建对象时,会触发对应类的构造函数。构造函数不写默认无参,也可以手动添加无参构造和有参构造。如果只添加含参/全参构造,那么默认的无参构造会被覆盖。
执行优先级:静态代码块>构造代码块>构造函数
this关键字
1.当成员变量与局部变量同名时,可以用this指示本类的成员变量
2.this():无参构造中,可以用this(..)调用含参构造;含参构造中,可以用this()调用无参构造;this()/this(..)位于构造函数第一行,否则编译出错。
super关键字
1.当父类与子类成员变量同名时,可以使用super关键字指定父类成员变量
2.子类在创建对象时,会默认调用父类构造函数:子类构造函数第一行,默认super()
3.当父类没有无参构造时,可以通过super(..)调用父类含参构造。子类必须调用一个父类构造,不管含参还是无参
4.构造方法不可以被继承。
super()是默认的;this()是手动添加的
static关键字
1.被static修饰的关键字或方法,不需要通过对象进行访问。只要类被加载了,就可以通过类名去访问。优先于对象加载
2.static变量(静态变量),被全局所有对象所共享,在内存中只有一个副本,当我们通过任意一种方式修改静态变量的值后,不管用何种方法查看,静态变量的值,都是刚刚修改的值
3.static代码块:将只需要进行一次初始化的操作放在static代码块中,常用来初始化
4.在java中,static不允许修饰局部变量
5.静态只能调用静态
6.static方法不能被重写 子类可以调用父类的静态方法
7.被static修饰的方法不能被重写,static资源属于类资源
final关键字
1.被final关键字修饰的类 不可以被继承 是最终类
2.被final修饰的方法是这个方法的最终实现 不能被重写
3.final修饰的变量叫常量 值不能修改 常量定义的时候必须赋值
4.常量的名称必须全是大写 单词之间用_分割 MAX_VAULE
abstract关键字
1.被abstract修饰的方法是抽象方法,抽象方法没有方法体
2.被abstract修饰的类 是抽象类。抽象方法必须位于抽象类中
3.抽象类不可以实例化
4.不能修饰变量
5.当一个子类继承了抽象父类后,要么实现抽象父类的所有抽象方法;要么子类定义成抽象类(没有实现所有抽象方法)
接口
使用interface关键字定义接口
使用implement关键字建立接口实现类与接口的实现关系
接口是父级 接口实现类是子级
抽象类与接口都不能被实例化
接口没有构造函数 实现类使用的super()是父类的无参构造
如果没有明确指明父类 那么super()代表的Object的无参构造
接口中都是静态常量 默认会拼接public static final
接口中都是抽象方法 默认会拼接public abstract
接口不是类
抽象类与接口
1.抽象类使用class关键字定义,是类
接口使用interface关键字定义,是接口
2.抽象类里可以定义成员变量
接口中没有成员变量,有的是静态变量默认拼接public static final
3.抽象类里的方法不做限制:全普、全抽、半普半抽
接口中的方法都是抽象方法,默认凭借public abstract
4.抽象类与接口均不能实例化
5.抽象类有构造方法,不是为了自己使用,而是为了子类创建对象是使用 接口没有构造方法,
接口没有构造方法,接口实现类调用的构造方法是父类的,与接口无关
6.接口可以多继承
抽象类只能单继承
7.抽象是后台重构的结果,接口是先天设计的