代码块
1.代码块格式:{}
2.常见代码块:
①静态代码块:类中,方法外。格式→static{}
②构造代码块:类中,方法外。格式→{}
③局部代码块:方法中。格式→{}
3.特征:
①静态代码块:随着类加载而加载,并且只能加载一次。多个静态代码块之间顺序加载。
适用于场景:类存在就需要使用的代码。
②构造代码块:随着构造方法的执行而执行,并且每执行一次构造方法,就会执行一次构造
代码块,并且在构造方法执行之前。多个构造代码块之间顺序执行。
适用于场景:多个构造方法中存在共性代码。
③局部代码块:主要在方法中,主要用于限定变量的作用域。
对象的加载顺序
1.类成员:属性、方法、构造方法、代码块
2.执行步骤:
①判断对象加载顺序,该类是否存在方法区中,存在直接使用,不存在加载到方法区中。
②查找main方法进行压栈。
③判断F是否在方法区中,存在直接调用,不存在向硬盘上加载到方法区。
④根据构造方法,选择构造方法执行。
⑤在构造方法执行之前,先要执行隐式三步。
①super
②构造代码块
③属性显示初始化
注意:2和3根据程序中的顺序进行执行。
⑥隐式三步执行完毕,才会执行构造方法中的代码。
⑦如果有方法调用,在执行调用方法,没有不执行。
3.总结:
①先加载类:考虑继承,先父后子。静态方法、静态属性、静态代码块、静态方法不调用不
执行。静态属性、静态代码块顺序执行。
②对象:构造方法的执行
①隐式三步:super(参数)考虑,继承、构造代码块,属性的显示初始化,顺序执行。
②构造方法的代码执行。
③有方法调用才执行。
抽象
1.概念:不具体,共性的特征。
2.抽象:abstract→表示抽象
3.抽象方法:格式→[权限修饰符] abstract 返回值类型 方法名称 (参数列表);
4.抽象类:当一个类拥有抽象方法时,该类必须是一个抽象类。类前面必须加关键字:abstract
抽象类的声明格式→[权限修饰符] abstract class 类名{}
5.抽象类特点:
①抽象类也是类,拥有类的特点,可以有属性,方法,构造方法。
②抽象类不能够直接创建对象,要创建对象,必须通过子类实现抽象类的方法,才能创建子
类对象。
③一个类如果有抽象方法,该类必须是一个抽象类。如果一个类是抽象类,未必有抽象方法
只要加了关键字abstract在类上就可以。
6.抽象类与一般类的区别:
①写法:
抽象类:abstract class 类名
类:class 类名
②组成成员:
抽象类:属性、方法、构造方法、抽象方法。
类:不能有抽象方法,其它都可以。
③创建对象:
抽象类:不能够创建对象。
类:可以直接创建对象。
④对于方法的实现
抽象类:如果有抽象方法,必须要实现。
类:继承父类的方法,可以重写也可以不写。
模板设计模式
1.设计模式:是一套被反复使用,多人知晓的,经过分类编目的,代码设计经验的总结。使用
设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性,程
序重用性。
2.常见设计模式:有23种,在模板(Template Pattern)中,一个重写类公开定义执行它的方法的
方式/模式,它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式
实现,这种类型的设计模式属于行为型模式。