Java学习8 2020-02-13

内容

1.单例模式
2.super

一.单例模式

单例模式是23种设计模式中最简单的一种设计模式。

1.目的

为了保证JVM中某一个类只有一个对象,目的是为了节省内存的开销

2.单例模式要领:

①.构造方法私有化
②.对外提供一个公开的静态的(因为一开始没法创建对象)获取当前类型对象的方法
③.提供一个当前类型的静态变量

3.使用示例

public class SingleTon{
//静态变量
private static SingleTon s;

//将构造方法私有化
private SingleTon();

//对外提供一个公开获取SingTon对象的方法
public static SingTon getInstance(){
if(s == null){
s = new SingleTon();
}
return s;
}

}

4.单例模式种类

懒汉式单例:用到对象的时候才会创建对象,就像上面的代码
饿汉式单例:在类加载阶段就创建了对象,比如下面的代码

public class SingleTon{
//静态变量
private static SingleTon s = new SingleTon();

//将构造方法私有化
private SingleTon();

//对外提供一个公开获取SingTon对象的方法
public static SingTon getInstance(){
return s;
}

}

懒汉式比较好一点

二.super

1.简单介绍

①.super不是引用类型,super中存储的不是内存地址,和this不一样,super指向的不是父类对象
②.super代表的是当前子类对象中的父类型特征

2.何时用

子类和父类中都有某个数据/方法,子类将父类中的重写了,比如name,如果想要访问父类中的,就需要加super.。如果不加,就默认是this.也就是子类中的

3.用在哪

super可以用在成员方法中,也可以用在构造方法中,不能用在静态方法中(这个和this一样)

4..super在构造方法中:

①语法

super(实参);

②作用:

通过子类的构造方法去调用父类的构造方法,作用是给当前子类对象中的父类型特征赋值。所以父类的构造方法不是继承到子类的,而是子类调用的。

③语法规则:

一个构造方法第一行如果没有this(...),也没有显示的去调用super(...),系统会默认调用super(...);

④注意

(1)super();的调用只能放在构造方法的第一行,这一点和this(...)一样。
(2)super()不会创建父类对象,虽然调用了父类的构造函数,
所以构造方法执行不一定创建对象
(3)结论:
Ⅰ.Java语言中只要是创建java对象,那么Object中的无参数构造方法一定会执行
Ⅱsuper(...)和this(...)不能共存

⑤单例模式缺点:(由super推出的)

无法被继承没有子类
因为构造方法都是private的,子类也无法使用super调用父类的(最大的缺点)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,949评论 2 9
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,597评论 0 11
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,013评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,768评论 0 4
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 4,894评论 0 2