黑马程序员_Java面向对象(上)

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

    面向对象(Object Oriented)是Java语言的核心思想。面向对象是相对面向过程而言,面向过程强调的是功能行为,面向对象强调的是将功能封装进对象,强调具备了功能的对象,且面向对象是基于面向过程的。

    过程和对象在我们的程序中的体现过程其实就是函数;对象是将函数等一些内容进行了封装

    1:将复杂的事情简单化。

    2:面向对象将以前的过程中的执行者,变成了指挥者

    3:面向对象这种思想是符合现在人们思考习惯的一种思想

类的定义:描述事物壁板就是描述事物的属性行为

     在Java中属性:对应类中的成员变量

                    行为:对应类中的成员函数

成员变量和局部变量的区别:

    1:成员变量直接定义在类中

          局部变量定义在方法中,参数上,语句中

    2:成员变量在这个类中有效

          局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域

   3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失

          局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放

构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种    

     1:该函数的名称和所在类的名称相同

     2:不需要定义返回值类型

     3:该函数没有具体的返回值

一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,如果在类中自定义了构造函数,那么默认的构造函数就没有了。

一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的

构造函数和一般函数的区别:  

       构造函数是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。 一般函数,是对象创建后,需要调用才执行,可以被调用多次

匿名对象:

    1:当对方法只进行一次调用的时候,可以使用匿名对象

    2:当对象对成员进行多次调用时,不能使用匿名对象,必须给对象起名字

 

面向对象特征:封装(encapsulation)、继承(inheritance)、多态(polymorphism)

   封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

              将变化隔离、便于使用、提高重用性、提高安全性

       封装原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共方法对其访问

   this关键字:代表本类的对象的引用,在函数内需要用到调用该函数的对象时,就用this

         调用格式:

                     this对象后面跟上 .  调用的是成员属性和成员方法(一般方法)

                     this对象后面跟上 () 调用的是本类中的对应参数的构造函数

         this调用构造函数时必须在构造函数第一行,由于构造函数是用于初始化导致的

   static关键字:用于修饰成员(成员变量和成员函数)

       static的特点:
            1:是一个修饰符,用于修饰成员 
            2:修饰的成员被所有的对象所共享
            3:优先于对象存在,因为static的成员随着类的加载就已经存在了
            4:修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 
            5:修饰的数据是共享数据,对象中的存储的是特有数据

        使用注意

            1:静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
            2:静态方法中不可以使用this或者super关键字 
            3:主函数是静态的

        静态的使用:

            1,静态变量。(数据共享时静态化)

                  该成员变量的数据是否是所有对象都一样

                  是,那么该变量需要被静态修饰,因为是共享的数据

                  不是,那么就说这是对象的特有数据,要存储到对象中

            2,静态函数。(方法中没有调用特有数据时就定义成静态)

                 判断成员函数是否需要被静态修饰

                 只要参考,该函数内是否访问了对象中的特有数据:

                 有访问特有数据,那方法不能被静态修饰。

                 没有访问过特有数据,那么这个方法需要被静态修饰    

          成员变量和静态变量区别:
              1:两个变量的生命周期不同
                   成员变量随着对象的创建而存在,随着对象的被回收而释放
                   静态变量随着类的加载而存在,随着类的消失而消失

              2:调用方式不同 
                    成员变量只能被对象调用 
                    静态变量可以被对象调用,还可以被类名调用
              3:别名不同 
                   成员变量也称为实例变两量 
                   静态变量称为类变量
              4:数据存储位置不同
                   成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据
                   静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据  

            静态代码块:就是一个有静态关键字标示的一个代码块区域     

  主函数:main:主函数特定名称

               (String[] args):主函数的参数,是一个字符串数组类型的参数,jvm调用main方法时,传递的实际参数是 new String[0]   

 

 设计模式:对问题行之有效的解决方式,其实它是一种思想。

   单例设计模式

     解决的问题:保证一个类在内存中的对象唯一性。

     比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。

    保证对象唯一性:
           1:不允许其他程序用new创建该类对象
           2:在该类创建一个本类实例
           3:对外提供一个方法让其他程序可以获取该对象
      步骤:
          1:私有化该类构造函数
          2:通过new在本类中创建一个本类对象
          3:定义一个公有的方法,将创建的对象返回

  //饿汉式 
  class Single1 //类一加载,对象就已经存在了。
{
  private static Single1 s = new Single1();

  private Single1(){}

  public static Single1 getInstance()
  {
    return s;
  }
}
//懒汉式 :延迟加载方法
class Single2    //类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象
{
  private static Single2 s = null;

  private Single2(){}

  public static Single2 getInstance()
  {
    if(s==null)
      s = new Single2();
    return s;
  }
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值