Java学习日记----面向对象1

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

 

1 概述   

  1.1 面向对象是相对面向过程而言的,面向对象和面向过程都是一种思想.面向过程强调的是功能行为;面向对象,是将功能封装进对象,强调的是具备了功能的对象.     注:面向对象是基于面向过程的.   

  1.2 面向对象的举例:冰箱的例子,买电脑的例子,公司招聘的例子.

2 类与对象的关系   

  2.1 面向对象有三大特征:封装,继承,多态.       

    在以后的开发中其实就是在找对象,没有对象,就创建一个对象.   

  2.2 类与对象的关系:       

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

    对象:就是某类事物实实在在存在的个体.       

    描述:提取对象中共性内容,是对个体的抽象.   

  2.3描述在Java中是以类的形式来体现的,而对象在Java中是通过new操作符所产生的一个实体,这个实体存放在堆内存中.     

  描述一个事物无非就是在描述事物的两部分,一:事物的属性; 二:事物的行为.       

  属性对应的是类中的变量,行为对应的是类中的函数或方法.

3 封装   

  3.1 概述:隐藏对象的属性和实现细节,仅对外提供公共访问方式.         

    好处:将变化隔离,便于使用,提高复用性,安全性.        

    原则:将不需要对外提供的内容都隐藏起来.把属性隐藏,提供公共访问方式对其访问.函数就是Java中最小的封装体.之所以对外提供访问方式,就是因为在访问方式中可以加入一些逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性   

  3.2 private ,私有修饰符,权限修饰符中的一种,用于修饰类中的成员变量(方法),被private修饰的成员只在本类中有效.封装不一定是私有,私有仅仅是封装的一种表现形式.             3.3 对于成员变量,只有两种操作方法,set和get.

4 构造函数   

  4.1 特点:函数名与类名相同,不用定义返回值类型,不可以写return语句.        

    作用:给对象进行初始化.   

  4.2 对象一创建,就会调用与之对应的构造函数.当一个类没有定义构造函数时,系统会默认给类加上一个空参数的构造函数;当在类中定义了构造函数时,系统就不会默认给类加上一个空参构造函数了,Person p = new Person();其中的Person()就是代表Persona类中的空参构造函数,给对象p进行初始化.   

  4.3 什么时候定义构造函数       

    当分析事物时,该事物一存在就具备一些特性或者行为,那么就将这些内容定义在构造函数中,构造函数在定义时如果需要未知内容参与运算,就定义参数,如果不要就空参数.        

  4.4 构造代码块       

    作用:给对象进行初始化,对象一创建就运行,且优先于构造函数执行.与构造函数的区别:构造代码块是给所有的对象初始化的,而构造函数是给对应的对象进行初始化的.             注:构造代码块定义的是不同对象共性的初始内容.

5 this关键字   

  5.1 作用: 用于区别成员变量和局部变量同名的情况,它代表的是本类的对象.this代表它所在的函数所属对象的引用,简单的说,哪个对象调用this所在的函数,this就代表哪个函数.其实在一个类里,成员之间的互相调用都是对象完成的.   

  5.2 应用:当定义类中的功能时,该函数要调用函数所属的对象时,可以用this表示这个对象.但凡本类功能用到了本类对象,都可以用this表示.   

  5.3 this用于构造函数间的相互调用,this语句只能放在第一行,初始化动作一定要先执行,初始化中还有初始化,那就执行更细的初始化.

6 static关键字   

  6.1 static,静态,是一个修饰符,用于修饰成员(变量和函数);静态修饰的内容被对象共享,当成员被静态修饰后就多了一种被调用的方式,除了可以被对象调用外,可以直接被类名调用(类名.静态成员).   

  6.2 静态的特点:       

      1> 随着类的加载而加载;

      2> 优先于对象存在 ;

      3> 被所有对象共享;

     4> 可以直接被类名调用   

  6.3 静态成员和非静态成员的区别:       

    1>存放位置:静态成员随着类的加载存放于方法区中;非静态成员随着对象的建立存放于堆内存中.       

    2>生命周期:静态成员的生命周期最长,随着类的消失而消失;非静态成员随着对象的消失而消失.   

  6.4 静态的使用注意事项:       

    1>静态方法只能访问静态成员,非静态方法既可访问静态成员,又可以访问非静态成员.       

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

  6.5 静态的优缺点:       

    优:对对象的共享进行单独空间的存储,节省空间,可以直接被类名调用.       

    缺:生命周期过长,访问出现局限性(只能访问静态).   

  6.6 静态的应用---工具类       

    每一个应用程序中都会有共性的功能(方法),可能将这些功能进行抽取,独立封装,以便于复用.用静态修饰方法后,可以方便于使用,但是该类还是可以被其它程序建立对象,为了更严谨,强制让该类不能建立对象,可以将构造函数私有化.   

   6.7 静态代码块       

    1>格式:static{执行语句;}       

    2>特点:随着类的加载而执行,只执行一次,且优先于main方法执行;只能访问静态成员,  

7 对象的初始化过程   

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

  1>因为new用Persona.class文件,所以会行先找到Persona.class文件,并加载到内存中;   

  2>执行该类的静态代码块,如果有的话,给Persona类进行初始化;   

  3>在内存中开辟空间,分配内存地址;   

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

  5>对属性进行显性初始化;   

  6>对对象构造代码块进行初始化;   

  7>对对象进行对应构造函数初始化;   

  8>将内存地址赋给栈内存中的p变量.

8 单例设计模式   

  8.1 单例设计模式所解决的问题是保证一个类在内存中只有一个对象.   

  8.2 要想保证对象的唯一性,为避免其它程序过多的建立该类对象,先要禁止其它程序建立该类对象,为了让其它程序访问到该类对象,只好在该类自定义一个本类对象;为了方便于其它程序访问自定义的对象,可以提供一个访问方法.   

  8.3 步骤:

    1> 将构造方法私有化;

    2> 在类中创建一个本类对象;

    3> 提供一个方法,可以获取到本类对象.   

  8.4 单例设计模式有两种方法:       

    1>懒汉式:对象在方法被调用时才开始初始化,也叫对象的延时加载.       

    2>饿汉式:先初始化对象.       

      在开发中一般用饿汉式,懒汉式有安全问题,定义单例时,建议用饿汉式.

转载于:https://www.cnblogs.com/kftghai/archive/2012/12/08/2808196.html

你可能感兴趣的:(Java学习日记----面向对象1)