• 面对对象


     

    面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。

    面向对象的特点
      A:封装
      B:继承
      C:多态

    (1)面向过程 强调过程,执行者
    (2)面向对象 强调对象,指挥者
    (3)面向对象思想的特点
      A:它是一种更符合人们思考习惯的思想
      B:它是复杂的内容简单化
      C:它使我们从执行者变成了指挥者
     面向对象的思想
     定义一:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
     定义二:面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
     面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
     面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。

    类和对象
     (1)类 对现实世界中事物的描述(属性和方法)Person p = new Person();
     (2)对象 现实世界中实际存在具体的个体
     (3)对象的使用 通过new关键字来创建对象

    构造函数:用于给对象进行初始化。

    你不定义空参数的构造函数,系统会自动给一个空参构造,你定义了构造函数无论是有参还空参的,系统就不再给空参数的了。

    构造方法的方法名必须与类名相同。
    构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
    构造方法不能由编程人员调用,而要系统调用。
    一个类可以定义多个构造方法,也就是构造方法可以重载,以参数的个数,类型,或排列顺序区分。
    构造函数细节:如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
    作用:构造方法的主要作用是完成对象的初始化工作,它能够把定义对象    时的参数传给对象的域。

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

    1从功能上的区别:

    构造函数是给对象初始化的

    一般函数是因为对象需要满足某种功能定义的

    2从执行上的区别

    构造函数,是对象创建的时候被执行,不用调用。

    一般函数是什么时候调用,就什么时候执行,不调用就永远不执行。

    局部变量和成员变量:(作用于大括号里边)
     (1)作用范围
      局部变量:方法内
      成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}
     (2)存储空间
      局部变量:栈内存
      成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
     (3)初始化值
      局部变量:在使用前必须手动给值
      成员变量:jvm默认初始化值。

    this关键字:

     第一、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错.
     第二、在函数中,需要引用该函数所属类的当前对象时候,直接用this。//比较两个人的年龄
     第三、注意,如果我们想在一个构造函数中对另一个构造函数进行调用的时候,不能在其构造函数中直接类名(参数)这样调用,而是通过this调用另一个构造方法,用法是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。这叫this语句.只能放在构造函数的第一行

    static(静态)关键字:

    static  是一个修饰符,用于修饰成员(成员变量 、成员方法)

    static特点:
    <1>、随着类的加载而加载。  也就是说:静态会随着类的消失而消失,说明它生命周期最长。
    <2>、优先于对象存在  。明确一点:静态先存在 对象后存在。
    <3> 被所有对象共享 ,
    <4> 可以被类名所调用

    实例变量(非静态的成员变量)和类变量(静态变量)的区别:
    <1> 存在内存中的位置:
       (类变量)静态变量随着类的加载而存在于方法区中。
       实例变量随着对象的建立而存在于堆内存中。
    <2> 生命周期:
            静态变量的生命周期最长,随着类的消失而消失。
            实例变量的生命周期随着对象的消失而消失。
    <3>所属不同:
       静态变量也称之为类变量,所属于整个类,被整个类所共享。
       实例变量是对象的特有数据,所属于对象。

    静态使用注意事项:
    <1> 静态方法只能访问静态成员
               非静态方法既可以访问静态也可以访问非静态
    <2> 静态方法中不可以定义this,super关键字
               因为静态优先于对象存在。所以静态方法中不可以出现this。
    <3> 主函数是静态的。

    局部代码块&构造代码块&静态代码块:

    1,局部代码块:
    作用:控制变量的生命周期;
    在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。
    2,构造代码块:
    作用:它可以给所有对象进行初始化
    存在于:类中。
    当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!
    3,静态代码块:
    作用:给类进行初始化。
    当类中的方法都被静态了化,并且构造方法被private了,这时我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块

    总结:

    this是指向对象本身的一个指针

    被static修饰的方法还可以直接被类名调用 格式:类名.静态成员

    静态成员随着类的加载而加载,生命周期最长

    当方法中定义了有参的构造函数那么jvm就不会为我们添加无参的构造函数所以我们应该手动写上无参的构造函数以保证程序的健壮性

  • 相关阅读:
    PythonStudy——epoll 模块实现异步IO模型
    MySQLStudy——Mac下MySQL 允许用户远程访问数据库
    MySQLStudy——MySQL 基础语句
    MySQLStudy——MySQL 概念
    MySQLStudy——Mac下MySQL 常用命令 启动 关闭 重启服务 查看版本
    PythonStudy——IO模型
    PythonStudy——非阻塞IO模型
    PythonStudy——多路复用IO select实现
    restfull api
    斜体菜单
  • 原文地址:https://www.cnblogs.com/sooper/p/3405265.html
Copyright © 2020-2023  润新知