您的位置:首页 > 职场人生

黑马程序员_Java基础面向对象_01

2014-06-01 22:16 246 查看
----------Android、Java开发期待与您交流----------

面向对象的特征:封装、继承、多态

面向对象是基于面向过程而言

面向对象和面向过程都是一种思想
面向过程强调功能行为,展现细节;面向对象是将功能封装进对象,隐藏功能具体细节,强调具备了功    能的对象。

类与对象的关系:

        对象:指现实生活中实实在在存在的个体
        类:指对对象的统一描述

成员变量和局部变量:

        成员变量:作用于整个类中,因为对象的存在而存在,在堆内存中

        局部变量:作用于函数或语句中,存在于栈内存中

匿名对象:

        1.对对象的方法只调用一次时可以使用匿名对象,简化写法

        2.如果一个对象进行多个成员方法调用时,必须给这个对象起个名字;

        3.匿名对象可以当作参数传递

一.封装

         封装:封装是一种把代码和代码所操作的数据捆绑在一起,使两者不受外界干扰和误用的机制。它隐藏了对象的属性和实现细节。仅对外提供公共的访问方式。

         封装的好处:

                1.将变化隔离

                2.提高代码重用性

                3.提高安全性

         封装原则:

               1.将不需要对外提供的内容隐藏起来

               2.把属性都隐藏,提供公共方法对其访问

成员方法和构造方法的区别:

        功用:成员方法是类或类对象某种行为的体现;构造方法用于对类对象初始化

        格式:修饰符、返回值类型、命名

                  1.修饰符:构造器可以有任何访问修饰符或者没有修饰符,但不能被abstract、finally、native、static或者synchronized修饰

                  2.返回值:构造方无返回值类型,也不需要void
                  3.命名:成员方法名称遵循标识符规则,构造函数名称则必须和类名相同

                  4.每个类可以有一个以上的构造器

                  5.构造器可以的参数个数不受限制

                  6.构造器总是伴随new操作一起调用

构造代码块:

        该类事物具备的一些特性或行为可以放在构造代码块中,当对象初始化时自动被执行

this关键字的用法:

        1.区分局部变量和成员变量同名情况

        2.代表本类的对象,this代表所在函数所引用的对象,谁调用this所在函数,this就代表谁

        3.定义函数功能时,该函数内部需要用到调用函数的对象时,这时this代表这个对象

static关键字:

        作用:用于修饰成员(成员变量或成员函数)

        被修饰后的成员具备以下特点:

               1.伴随类的存在而存在,消失而消失

               2.优先于对象存在

               3.被所有对象共享

               4.可以直接被类名调用(类名.静态成员)

       注意事项:

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

               2.静态成员优先于对象存在,所以静态方法中不可以写this、super关键字

               3.主函数是静态的

成员变量和类变量的区别:

       1.存放的位置

                 1.1类变量存在于方法区中

                 1.2成员变量随着对象的建立存在于堆内存中

      2.生命周期

                 2.1类变量生命周期长,随着类的消失而消失

                 2.2成员变量生命周期短,随着对象的消失而消失

静态的优缺点:

       优点:对象的共享数据进行单独空间的存储,节省空间,没有必要每个对象中存储一份

       缺点:声生命周期过长;访问出现局限性(静态虽好,只能访问静态)

静态代码块:

       1.随着类的加载而执行,只执行一次,用于给类初始化。

       2.静态代码块里面的变量都是局部变量,只在本块内有效

       3.静态代码块只能定义在类里,它独立于任何方法,不能定义在方法里面

        4.一个类中可以定义多个静态代码块,执行的顺序分居定义的顺序进行

    

代码执行顺序:

       1.静态代码块;2. 构造代码块;3.构造函数

主函数:是一个特殊的函数,作为程序的入口,可以被jvm调用

主函数的定义:

        public:代表该函数的访问权限是最大的

        static:代表主函数随着类的加载就已经存在了

        void:主函数没有具体的返回值类型

        main:不是关键字,但是一个特殊的单词,可以被jvm识别

单例模式:

       单例模式:一个类只有一个实例。

       要点:

               1.某个类只能有一个实例;即单例模式的类只提供私有的构造函数

               2.它必须自行创建这个实例;即类定义中含有一个类的静态私有对象

               3.必须自行向整个系统提供这个实例;提供一个静态的公共函数用于创建或获取它本身的静态私有对象

    优点:

               1.单利模式会阻止其它对象实例化自己单例对象的副本,从而确保所有对象访问唯一实例

              2.因为类控制了实例化过程,所以类可以灵活更改实例化过程

    缺点:

             1.每次对象请求引用时都要检查是否存在类的实例
             2.使用单例对象时,开发人员必须记住通过静态方法调用获得实例对象,因为有可以无法访问源代码,可能会误导开发人员此类无法被实例化

public class Singleton {

}
//懒汉式
class Hunger {
private Hunger() {
}

private static Hunger h = new Hunger();

public static Hunger getSingleton() {
return h;
}
}

class Lazy {

private static Lazy lazy = null;

private Lazy() {
}
//饿汉式(双重锁)
public static Lazy getSingleton() {
if (lazy == null) {
synchronized (Lazy.class) {
if (lazy == null) {
lazy = new Lazy();
}

}
}
return lazy;
}
}


Java修饰符使用范围

     使用范围
修饰符

同类
同包
不同包的子类
所有
private

×
×
×
default(默认)


×
×
protected



×
public




[align=center]----------Android、Java开发期待与您交流----------
[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  黑马程序员 java