一、代码块
类的执行顺序如下一图:
非静态代码块与静态代码块的特点与区别,如下一图:
静态代码块内部不能有this,super;
静态代码块和类变量一样在多次new时只加载一次。
用途一:
实际开发过程中多使用静态代码块,用于初始化类的静态属性(如类变量)
举例:
(1):创建类 TestPerson,并创建其属性;
(2):在类 Person 中,静态实例化类 TestPerson,然后在静态代码块中初始化类 TestPerson 的静态属性。
用途二:
在new对象时,后面跟一对 大括号; ,在里面 Alt + / ,可以选择重写类的方法,说明构建了没有类名的Person的匿名子类。此为匿名内部类。
由于没有类名,就不能在构造方法中初始化属性,此时由代码块代劳。
举例:
输出结果为:
luxy
重写
二、关键字 final
1、final 修饰类
2、final 修饰方法
3、final 修饰变量-常量
只能赋值一次,此时已经不能再赋值了。
final 应用举例:
留意可在构造方法中给final变量赋值,而且并没有提前显示赋值。
三、抽象类
举例:
(1):新建父类Animal,记得使用abstract关键字;
(2):创建子类,不需要abstract修饰,鼠标移到Dog上,在报错解决方案中选择重写方法,模板自动跳出;
(3):在main方法中实例化类 Dog,并调用move方法。
程序如下二图:
问题:
练习:
创建抽象父类及其子类,Manger类中加个 int bonus;即可。
在main方法中调用
输出结果为:
普通员工
12433
luxy
2344.0
四、模板设计模式
举例如下:
第一步,建立抽象类(大纲)
第二步,建立子类,alt+/ 重写code方法
第三步,在main方法中使用
输出结果为:
五、接口(1)
接口在定义属性与方法的时候都有默认的修饰词,如下一图:
新建接口:右击包-new-interface
演示:
第一步,建立第一个接口
第二步,建立第二个接口
第三步,新建类来连接这两个接口
第四步,新建接口来继承接口
接口与抽象类:
在模板方法设计模式中,父类需要是稳定的抽象类,子类要对父类的所有抽象方法实例化才能使用。
万一父类更改,众多子类都会收到影响,非常麻烦。
在遇到确实需要在父类中增加抽象方法的情况下,可以使用接口。
五、接口(2)
举例:
操作步骤:
(1)建立Person类作为父类
(2)建立Cooking接口与Sing接口
(3)建立SCTeacher类来继承父类并使用两个接口,记得重写所有抽象方法
(4)建立Test类,在main方法中验证
注意:new SCTeacher()对象后可以使用实例化的方法,
也可以使用Cooking来new SCTeacher(),但是只能使用从Cooking重写来的方法。
需要注意的:
六、工厂模式
在真正开发工作中,是进行合作开发的
步骤:
(1)创建产品接口BWM,建立抽象方法;
(2)创建类使用这个接口,实例化方法;
(3)创建工厂接口,建立抽象对象;
(4)创建生产工厂类使用工厂接口;
(5)建立Test类,在main方法中验证
总结:
开发人员A操作(1)(2)改动项目,使用(3)(4)与开发人员B对接;
开发人员A改动(1)(2)不会影响到开发人员B。
七、内部类
(1)首先说明一下内部类,即在类的内部创建类。
举例:
由于在内部类A中直接调用外部类的方法,所以getInfo()程序执行了两次。
(2)另外,可以创建多个内部类,如下图:
(3)内部类的作用:解决java不能多重继承的问题。
第一步:建立类A、B、C与其中的方法
如此,达到了类A间接继承类B与C的效果。
八、面向对象总结
与视频结合看