黑马程序员—面向对象(1)

来源:互联网 发布:cs软件界面设计 编辑:程序博客网 时间:2024/05/17 10:28

------- android培训java培训、期待与您交流! ----------

1  构造代码块

作用——给该类所有对象进行初始化,对象一建立就执行,优先于构造函数。

和构造函数区别——构造代码块给所有对象进行无差别的统一初始化,构造函数给对应对象初始化。构造代码块其实定义的是构造函数忠共同的部分。

格式

{

//构造代码块中内容。

}


2 关键字this


this代表本类的对象,代表它所在函数所属对象的引用。即某对象A调用了该函数,this就代表对象A。

当定义类中功能时,该函数内部要用到调用该函数的对象时,就用this表示该对象。

特殊用法——构造函数间相互调用。

Person(string name){}Person(string name,int age){      this(name);//必须放在第一行,因为初始化要优先执行,这里不能写Person(name)      this.age=age;}

3 关键字static

用法——修饰符,用于修饰成员变量或函数,被对象共享。

成员被静态修饰后,就多了一个调用方式,除了可以被对象调用,还可以直接被类名调用。

这类数据存储在方法区(共享区,数据区)。

特点:

(1)   随着类的加载而加载,随着类的消失而消失,较其它成员生命周期长。

(2)优先于对象而存在。

(3) 被所有对象所共享。

(4) 可以被类名调用。

存放位置:类变量随类的加载而存在于方法区中。

                   实例变量随对象的建立而存在于堆内存中。

注意:

(1)静态方法只能访问静态成员,非静态方法都可以访问。

(2)静态方法中不可以定义this,super等关键字,因为静态优先于对象而存在。

(3)主函数是静态的。


什么时候使用静态修饰成员或者函数?

(1) 对象中出现共享数据时(国籍,学校),该数据用静态修饰。

(2) 功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

特例:工具类

工具类:将一系列常用操作封装成一个类,其内部都是静态成员函数,并且为了防止用户创建该类对象,将构造函数私有化了。



4 静态代码块

格式:

static{//语句}

特点——随着类的加载而执行,只执行一次,用于给类进行初始化。,并且优先于主函数执行。


5 单例设计模式

基本思想:

(1) 通过私有化构造函数禁止其他程序建立该类对象。

(2)本类内部定义一个对象供其他程序访问。

(3)对外提供一个方法获取该类对象。

//饿汉式  class Single    {          private Single(){}          private static final Single s = new Single(); // final 可以不写          public static Single getInstance()          {          return s;          }    }
   ·懒汉式--对象调用时才初始化(对象的延时加载)     class Single2     {           private Single(){}           private static Single2 s = null;           public static Single2 getInstance()           {             if (s == null)             {               synchronized (Single.class)               {                     if (s == null)                              s = new Single2();               }             }             return s;            }      }



0 0