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

来源:互联网 发布:投行 知乎 编辑:程序博客网 时间:2024/05/22 07:43

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 

1、概述

面向对象是一种思想,能让复杂问题简单化,能让我们的角色从执行者变成指挥者。

举例:其实面试官你就是在用面向对象的思想在思考问题。公司里面现在有招人需求是因为用人需求比较大,代表公司蒸蒸日上,在发展。你需要找一些具备专业编程经验的人来帮你完成公司的工作。我就是那个对象,我就具备专业编程功能。其实你就是在指挥我做事情,你在使用我的编程功能,为公司创造价值。

2、类和对象的关系

    类是对对象的描述。

    类就是对现实生活中事物的描述,映射到java中,描述就是class定义的类。

    对象就是这类事物实实在在存在的个体,是java在对内存中用new建立的实体。

3、成员变量和局部变量

作用范围:成员变量作用于整个类中;局部变量作用于函数中或语句中。

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

4、匿名对象

       new Person().Age=19;

 new Person().Run();

使用方法:当对对象的方法只调用一次时,可用,这样比较简化;

          可以将匿名对象作为实际参数进行传递

5、封装

封装:隐藏对象的属性和实现细节,对外提供公共访问方式。如:函数、类

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

原则:将不需要对外提供的内容都隐藏起来。

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

6、private私有

   private:私有修饰符,权限修饰符,用于修饰类中的成员(成员变量,成员函数),私有只在本类中有效。

    类以外即使建立了对象也不能直接访问。一个私有成员变量通常有两个访问方式,即set和get方法。

    注意:私有仅仅是封装的一种表现形式。

    之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断语句,对访问的数据进行操作,提高代码健壮性。

7、构造函数

    用途:对象进行初始化

    特点:函数名与类名相同;不用定义函数返回值类型;不用写return语句

      注意:当一个类中没有构造函数时,那么系统默认会给该类加入一个空参数的构造函数。

当在类中自定义了构造函数后,系统自定义的构造函数便不存在。

      和一般函数的不同1)写法上的不同;

                                 (2)构造函数:在对象一建立就运行,给对象初始化

                                         一般方法:对象调用才执行,是给对象添加对象具备的功能

                                 (3)一个对象建立,构造函数只运行一次;一般方法:可被该对象调用多次

8、构造代码块

     例如:{
System.out.println("person code run");
cry();
}

      作用:给对象进行初始化。
       对象一建立就运行,而且优先于构造函数执行。
      和构造函数的区别:构造代码块是给所有对象进行统一初始化,
                         而构造函数是给对应的对象初始化。

9、this关键字

      this代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
      this的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。
       但凡本类功能内部使用了了本类对象,都用this表示。

                       用于构造函数之间进行互相调用。

10、static关键字

    特点:(1随着类的加载而加载

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

          (2)优先于对象存在

          (3)被所有对象所共享
          (4)可以直接被类名所调用。

     实例变量和类变量的区别:
   (1)存放位置:类变量随着类的加载而存在与方法区中;实例变量随着对象的建立而存在于堆内存中。
   (2)生命周期:类变量的生命周期最长,随着类的消失而消失;实例变量的生命周期随着对象的消失而消失。
     静态的使用注意事项:
        (1)静态方法只能访问静态成员和静态方法。因为静态方法和变量在类加载时就在了,非静态变量在对象存在时才存在
 (2)非静态方法可以访问静态也可以访问非静态。
(3)静态方法中不可以定义this,super关键字。因为静态优先于对象存在,所以静态方法不可以出现this。
(4)主函数是静态的。
      静态有利有弊:
  利:对对象的共享数据进行单独空间的存储,节省空间的内存,没有必要每个对象都存储一份;可以直接被类名调用。
          弊:生命周期过长,访问出现局限性,静态虽好只能访问静态。

11、主函数

     主函数是一个特殊的函数,作为程序的入口,被虚拟机调用。

     Public:代表着函数的访问权限最大,

     Static:代表随着类的加载而加载,

     Void:主函数无返回值。

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

     String[] arr:参数类型是字符窜数组。

     主函数是固定格式的,jvm识别。

     主函数传入的newString[0]的数组,是一个空的字符串数组

12、静态的使用

    静态的变量:当对象中出现了共享数据时,该数据被静态所以修饰,当对象中有特有数据要定义成非静态存在堆内存中。

    静态的函数;当功能内部没有访问到非静态数据(对象的特有数据)

    静态的应用:将共有的功能封装到一块。不需要对象来调用。

    同时将构造方法定义为私有的,防止别的用户创建不必的对象,这样更严谨。














0 0
原创粉丝点击