黑马程序员-java学习之面向对象上


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

一.面向对象概念的理解

三点重要特征:封装、继承与多态,面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。

例如人要想出门,可以直接买辆车,人只需要通过说明书知道怎样操作它,而不需要知道车这个对象的具体构造。

类:对现实生活中事物的描述

对象:就是这类事物,实实在在存在个体

描述事物就是描述事物的属性(对应类中变量)和行为(对应类中方法),属性和行为共同称为类的成员(成员变量和成员方法)

二.类和对象的关系:

类:对现实生活中事物的描述

对象:就是这类事物,实实在在存在个体

描述事物就是描述事物的属性(对应类中变量)和行为(对应类中方法),属性和行为共同称为类的成员(成员变量和成员方法)

成员变量作用于整个类中,局部变量作用于函数中,或者语句中

成员变量在堆内存中,因为对象的存在,才在内存中存在,局部变量:存在栈内存中

匿名对象:不定义对象的句柄,直接调用这个对象的方法,用于两种情况,一种是对一个对象只需要进行一次方法调用,另一种是将匿名对象作为实参传递给一个函数调用。

三.构造函数

构造函数的主要特征就是,与类有相同的名称,不含返回值,不能在方法中用return语句返回一个值,主要作用是为类的成员变量进行初始化,而且权限随着类而变化。

构造代码块(定义对象共性初始化内容):给对象进行初始化,对象一建立,就运行,而且优先于构造函数执行。

构造代码块是给所有对象进行统一初始化,而构造函数是给对应对象进行初始化。

this关键字:代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表那个对象。

构造函数间调用只能用this语句,this语句只能放在构造函数第一行,因为初始化动作要先执行,构造函数的权限和类的权限一致。

静态代码块(可以验证类是否加载):

格式:

static

{

              静态代码块中的执行语句。

}

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

       Static关键词总结:

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,

还可以直接被类名调用。类名.静态成员,它具有以下特点。

1,随着类的加载而加载。

   也就说:静态会随着类的消失而消失。说明它的生命周期最长。

 

2,优先于的对象存在

明确一点:静态是先存在。对象是后存在的。

 

3,被所有对象所共享

4,可以直接被类名所调用。

5,静态方法只能访问静态成员

6,静态方法中不可以定义this,super关键字。因为静态优先于对象存在。所以静态方法中不可以出现this。

 

Person p = newPerson("zhangsan",20);

该句话都做了什么事情?

1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。

2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。

3,在堆内存中开辟空间,分配内存地址。

4,在堆内存中建立对象的特有属性。并进行默认初始化。

5,对属性进行显示初始化。

6,对对象进行构造代码块初始化。

7,对对象进行对应的构造函数初始化。

8,将内存地址付给栈内存中的p变量

 

四.单例设计模式

设计模式的概念:就是指java中解决某一类问题最行之有效的方法,java中共有23种设计模式,

单例设计模式:解决一个类在内存只存在一个对象,具有以下特点:

1,将构造函数私有化。

2,在类中创建一个本类对象。

3,提供一个方法可以获取到该对象。

单例有两种,饿汉式和懒汉式

/*饿汉式*/

class Single

{

       private Single(){}

 

       private static Single s = new Single();

 

       public static  Single getInstance()

       {

              return s;

       }

}

 

/*懒汉式*/

//对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。

//Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。

class Single

{

       privatestatic Single s = null;

       privateSingle(){}

       publicstatic Single getInstance()

       {

              if(s==null)

              {

                     synchronized(Single.class)

                     {                         

                            if(s==null)

                                   s= new Single();

                     }

              }

              returns;

       }

}

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值