Java基础入门(十)之单例模式、Object类常用方法以及内部类

一、   单例设计模式

  1. 定义:通过只建立一个对象,解决问题
  2. 实现:

       (1)为了避免其他程序过多的创建对象 先禁止其他程序创建该类对象私有化构造方法

       (2)为了让其他程序可以访问到该对象 只好在本类中 创建一个对象

       (3)为了方便其他程序对自定义对象的是访问 可以对外提供一个方法

       3.步骤:

       (1)           私有化构造方法

      (2)           创建本类对象

      (3)           对外暴漏一个可以访问该类的方法

       4.特点:

    (1)单例类只能有一个实例。

    (2)单例类必须自己创建自己的唯一实例。

     (3)单例类必须给所有其他对象提供这一实例。 懒汉式 和 饿汉式

       5.好处

     (1)           频繁创建对象,销毁对象,造成系统想能下降,浪费内存

     (2)           饿汉式:类一加载,就创建本类对象   懒汉式:调用方法,才创建本类对象

二、   Object类的常用方法

  1. 定义: Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
  2. 常用方法

(1)           boolean equals(Object obj)   指示其他某个对象是否与此对象“相等”。

默认Object类中的equals方法 比较的是对象的地址值是否相同

==符号 和 equals()方法的区别****

==是一个比较运算符,既可以比较基本数据类型,又可以比较引用数据类型   基本数据类型比较的是值,引用数据类型,比较的是地址值

equals 只能比较引用数据类型

在方法重写前和==一样比较地址值,重写后比较的是对象中的属性值   一般都需要重写

(2)           int  hashCode()   返回该对象的哈希码值

如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。

如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。

规定:  当 obj1.equals(obj2) 为true的时候 obj1.hashCode() == obj2.hashCode();

     当obj1.equals(obj2) 为false的时候 obj1.hashCode() != obj2.hashCode();

(3)           String  toString()    返回该对象的字符串表示

三、   内部类 

  1. 定义: 将一个类 定义在另一个类的里面 里面的那个类就叫做内部类 内置类 嵌套类
  2. 分类:成员内部类 静态内部类 局部内部类 匿名内部类

2.1成员内部类

2.1.1创建成员内部类对象格式:

外部类名.内部类名 变量名 = new 外部类对象.new内部类对象 Outer.Inner oi = new Outer().new Inner();

2.1.2特点:

(1)内部类可以直接访问外部类中的成员 包括私有的

(2)外部类如果想要访问内部类的成员 必须创建内部类对象

(3)当类为内部类的时候 可以使用private修饰 因为它是外部类的一个成员

(4)当内部类被私有化后 就不能在外部其他类中创建该类对象了

2.2静态内部类(当内部类被static修饰后)

2.2.1格式:

外部类名.内部类名 变量名 = new 外部类名.内部类对象Outer_02.Inner_02 oi = new Outer_02.Inner_02();

2.2.2      特点:

如果内部类被静态修饰了 那么只能访问外部类中被静态修饰的成员 访问出现了局限性

2.3局部内部类

  2.3.1 特点:

放在类中方法中的类    在局部内部类 访问它所在的局部变量时 只能访问被final修饰的常量

2.4匿名内部类(内部类的简写模式)

2.4.1 前提条件:

 内部类必须继承一个类或者实现一个接口

2.4.2      格式:

             new 类或者接口名(){

                   重写方法

             }.调用重写的方法();

2.4.3注意事项:

匿名内部类中定义的方法 最好不要超过3个

猜你喜欢

转载自www.cnblogs.com/xue-er/p/9449979.html