DAY6
单例设计模式:
定义:就是让一个类永远只产生一个对象
- 饿汉式
- 将构造方法私有化
- 在类内部创建一个私有的静态的最终的本类对象
- 提供一个共有的静态的返回值类型为本类对象的一个方法
代码实现:
- 懒汉式
- 将构造方法私有化;
- 在类内部声明一个私有的静态的本类对象的一个方法;
- 提供一个公共的静态的返回值类型为本类对象的一个方法,在方法体内部返回本类对象的时候,会首先判断当前类的对象引用是不是Null,如果是Null,就创建本类对象;如果不是Null就直接返回
代码实现:
注:在开发中为了保证线程安全性,用饿汉式比较多
多态:
定义:就是某一事物在不同环境下所表示的不同状态
如:①水:常温----液态;很冷的温度----固态;很高的温度----气态;
②定义一个动物类;定义一个猫类;定义一个狗类;
然而猫和狗都是动物,所以它们的父类都是动物类,动物有的特性一般来说猫和狗都有
多态的前提和体现: - 需要有继承关系
- 父类引用指向子类对象;
- 子类重写父类的方法;
因此,Java中多态的定义为:就是使用父类引用指向子类对象,然后再使用父类引用调用子类重写了的方法
多态成员访问的特点: - 成员变量:
编译看左边,运行看左边 - 成员方法:
编译看左边,运行看右边 - 静态方法
编译看左边,运行看左边
代码解释:
依据上述代码:
关键看:Animal p = new Cat();代码
①成员变量调用后输出为:name=动物类,age=10
②成员方法调用后输出为:Cat类
③静态方法调用后输出为:Animal类的test
因此前面我们说静态方法的重写算不上重写,因为没有重写的特性。
多态的好处: - 提高了程序的维护性(由继承保证)
- 提高了程序的扩展性(由多态保证)
多态的弊端: - 父类引用无法访问子类特有的方法(可以使用转型)
注:任何类型的数据都可以被Object类型接收,Object类是所有类的父类,Object类是java的根类
Java中的转型: - 向上转型
从子到父:父类引用指向子类对象 - 向下转型
从父到子:将父类引用转换成子类对象(强转的时候需要注意,要强转的类型和父类指向的类型要保持一致)