final和特殊类

目录

1.final和常量

final

常量

2.单例类

学习思路:

单例设计模式

写法

(1)

(2)

(3)

3.枚举类

写法

特点

适合场景

4.抽象类

抽象类的注意事项和特点

使用抽象类的好处

模板方法设计模式

小结

 1.模板方法设计模式解决了什么问题?

2.模板方法设计模式应该怎么写?

3.模板方法建议使用什么关键字修饰?为什么?


1.final和常量

final

final关键字可以修饰:类,方法,变量

修饰类:该类被称为最终类,特点是不能被继承

修饰方法:该方法为最终方法,不能被重写

修饰变量:该变量有且只能被赋值一次

final修饰基本类型的变量,变量存储的数据不能被改变。

final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。

常量

使用了 static final 修饰的成员变量就被称为常量

static静态的 final最终的,属于类的一个常量。

作用:常用于记录系统的配置信息

注意:命名规范用大写

牵一发而动全身!!!

程序编译后,常量会被宏替换。

2.单例类

我们可以把这些特殊类看成一个设计模式解决了特定的问题。

学习这些特殊类

学习思路:

        解决什么问题?

        这种设计模式怎么写?

单例设计模式

作用:确保某个类只能创建一个对象

单例什么叫单例就是只有一个嘛。我们用这个类的一个对象做事情。

打个比方

这个是不是一个任务管理器,每次打开它都只有一个页面,重复点击也只有一个页面,这一个页面窗口相当于一个对象,在这个对象里面我们可以进行方法和属性操作。

还有比如

这个也是一个窗口,点击多少次也只有一个窗口。在这敞口里面可以做方法。

写法

(1)

1.私有化构造器。在外面不能创建对象

2.定义一个private静态对象

3.定义一个类方法返回对象

public class A{

        private A(){}

        private static  A  a = new A();

        public static  A   getInsatnce(){
             return a;

        }     

}

(2)

1.私有化构造器。在外面不能创建对象

2.定义一个private final静态对象

public class A{

        private A(){}

        private static  final A  a = new A();

}

(3)

用对象时,才开始创建对象。

1.私有化构造器。在外面不能创建对象

2.定义一个静态变量用于存储对象(用于本类唯一对象)

3.定义一个静态方法返回对象

public class A{

        private A(){}

        private static  final A  a ;

        public static A getObject(){
               if(a==null){

                        a   = new A();

                }

                return a;

        }

}

3.枚举类

写法

修饰符 enum 枚举类名{

        名称1,名称2……;

        其他成员……

}

特点

枚举类中的第一行只能写枚举类的对象名称,且要用逗号隔开

这些名称,本质是常量,每个常量都记住了枚举类的一个对象

适合场景

枚举类很适合做信息分类和标志

 

这个可以跟按键配套传参进行移动。

4.抽象类

抽象类的注意事项和特点

在java中有一个关键字叫abstract,抽象的意思,可以用它修饰类、成员方法。

abstra修饰类,这个类就是抽象类。abstract修饰方法,这个方法就是抽象方法。

1.抽象类 不一定要有抽象方法,抽象方法一定要有抽象类

2.类的成员可以跟正常类一样。

3.抽象类不能创建对象,仅仅作为一种特殊的父类,让子类继承并实现。

4.一个类继承抽象类,必须重写抽象类的全部抽象方法,否则这个子类也必须定义成抽象类(没必要)

使用抽象类的好处

父类如果知道子类都跟他做的方法不一样,那么 他就变成抽象类,声明抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态

模板方法设计模式

场景:比如写一篇作文,标题,开头,结尾都一样,正文不同。

就相当于:

public class A{                                    

        一样;

        不一样;

        一样;

}

public class B{

        一样;

        不一样;

        一样;

}

在父类把一样的写了,不一样的就搞一个抽象方法只声明,剩下的留给子类去重写,然后调用父类的方法,重写部分会自动找到对象的重写部分。就节省了代码,提高复用代码。

我们也可以

final修饰模板方法,因为模板方法是给子类用的,子类重写的只是里面的一部分内容,代码更优美,且更可读,一旦被重写了模板方法,那么这个方法就失效了。

小结

 1.模板方法设计模式解决了什么问题?

        解决了方法中重复代码的问题。

2.模板方法设计模式应该怎么写?

        定义一个抽象类

        在里面定义两个方法,一个是模板方法,一个是抽象方法

3.模板方法建议使用什么关键字修饰?为什么?

        建议用final关键字修饰模板方法,不能重写,直接被子类使用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值