简单介绍模板设计 final关键字 与代码块(再见少年拉满弓,不惧岁月不惧风)

模板设计模式
    抽象类存在意义就是被子类继承,然后重写内部的抽象方法,体现的就是模板设计模式
    设计模式:
            被一套反复使用的,多数人知晓的,经过分类编目的,代码设计经验的总结,使用了设计模式是为了可重用代码,让代码更容易让他人理解,保证代码的可靠性,程序的重用性
            白话文:简单来说  就是一个好的编码风格,并不是技术点
            不同设计模式有不同的效果,具体先说下模板设计模式
    例子:就比如说是一个作文模板,给了开头,和结尾,填写中间的内容,这是我所理解的模板设计模式
    模板设计模式:
                把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法,让使用模板的类(继承抽象方法的类)去重写抽象方法实现需求
    实例:
        定义一个父类:
        public abstract class template {
            public void write(){
                System.out.println("我的梦想做一个技术大牛");
                body();
                System.out.println("我i会成功的");
            }
            public abstract void body();
    
        }    
        定义一个子类继承他的方法  因为是抽象方法 所有要重写body里边的内容,子类去填充内容
        public class test extends template{

            @Override
            public void body() {
                System.out.println("一点点积累,一点点学习");
            }
        }
        使用测试类进行测试
        public class writer {
        public static void main(String[] args) {
        test witerr=new test();
        witerr.write();
        }
        }
        
        输出结果:
        我的梦想做一个技术大牛
        一点点积累,一点点学习
        我i会成功的
        模板设计模式的优势,模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可
    final关键字
        模板方法一般是去定义骨架(结构),是不允许更改的
        假设子类重写了这个方法会有什么后果呢?
        把代码逻辑打乱,不是我们想要的东西
    final关键字是最终的意思,可以修饰(方法,变量,类)
    final修饰的特点
            修饰方法:表示该方法是最终方法,不能被重写
            修饰变量:表明该变量是常量,不能被再次赋值   
                    基本数据类型:不能被更改
                    应用数据类型:内存中的内存地址不能被更改,但是可以更改属性值
            修饰类:表明该类是最终类,不能被继承,没有子类
            定义一个父类:
        public abstract class template {
            public final void write(){
                System.out.println("我的梦想做一个技术大牛");
                body();
                System.out.println("我i会成功的");
            }
            public abstract void body();
    
        }    
        定义一个子类继承他的方法  因为是抽象方法 所有要重写body里边的内容,子类去填充内容
        public class test extends template{

            @Override
            public void body() {
                System.out.println("一点点积累,一点点学习");
            }
        }
        使用测试类进行测试
        public class writer {
        public static void main(String[] args) {
        test witerr=new test();
        witerr.write();
        }
        }
    小提一下常量命名规范:如果是一个单词,所有字母大写,如果是多个单词,所有字母大写,但是中间需要使用_分隔
    例如:
    final int MAX=10;
    final int MAX_VALUE=20;
    注意:final修饰成员变量,初始化时机
            1.在创建的时候,直接给值
            2.在构造方法结束之前,完成赋值
    代码块:
            在Java中,使用[]括起来的代码被称为代码块
        分类:
        局部代码块
        构造代码块
        静态代码块
        实例:
        局部代码块:
    public class test {
    /*
    局部代码块
    位置:在方法中定义
     作用:限定变量的生命周期,及早释放,提高内存利用率
     */
    public static void main(String[] args) {
        {
                int a=10;
                System.out.println(a);
            }
            System.out.println(a);//错误访问不到,因为常量a的范围就在括号里边,不存在括号外边所以就会报错,当执行完代码块,a的内存就会消失,提高了内存利用率,释放了空间
        }
    }
    
    构造代码块
    public class test2 {
    /*
    构造代码块
    位置:类中方法外定义
    特点:每次构造执行的时候,都会执行改代码块中的内容,并且构造方法执行前执行
    作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高了代码的复用性
     */
    public static void main(String[] args) {
        Student s=new Student();
        Student s1=new Student(10);

    }
    }
    class Student{
    {
        System.out.println("这是一个构造代码块");
        }
    public Student(){
        System.out.println("空参数构造方法");
        }
    public Student(int a){
        System.out.println("带参数构造方法");
        }
    }
    打印内容:这是一个构造代码块
            空参数构造方法
            这是一个构造代码块
            带参数构造方法
    无论每次调用空参还是带参方法时,就要执行构造代码块的内容
    
    
    静态代码块
    public class test3 {
    /*
    静态代码块
        位置:类中方法外定义
        特点需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
        作用:在类加载的时候做一些数据初始化的操作
     */
    public static void main(String[] args) {
        Person s=new Person();
        Person s1=new Person(10);
    }
}
class Person{
    static {
        System.out.println("我是静态代码块");
    }
    public Person(){
        System.out.println("我是空参构造方法");
    }
    public Person(int a){
        System.out.println("我是有参构造方法");
    }

}
        打印内容:我是静态代码块
                  我是空参构造方法
                  我是有参构造方法
    分类:
    局部代码块
        位置:在方法中定义
        作用:限定变量的生命周期,及早释放,提高内存利用率
    构造代码块
        位置:类中方法外定义
        特点:每次构造执行的时候,都会执行改代码块中的内容,并且构造方法执行前执行
        作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高了代码的复用性
    静态代码块
        位置:类中方法外定义
        特点需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
        作用:在类加载的时候做一些数据初始化的操作

今天早上六点多就被拉起来做核酸了  困得顶不住了   狗命要紧 今天先到这 有不懂的可以一起讨论  qq:3302473295

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值