JavaSE07 面向对象(OOP) 01

JavaSE07 面向对象(OOP) 01

Java的核心思想就是OOP

初始面向对象

面向过程&面向对象

面向过程思想

线性思维,步骤非常明确清晰。

面向过程思想: 步骤清晰简单,第一步做什么,第二步做什么

面向过程适合处理一些较为简单的问题。

面向对象思想

物以类聚,分类的思维模式。

思考问题会首先解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

面向对象适合处理复杂的问题,适合处理需要多人协作的问题。

面对复杂的事物,为了宏观上的把握,从整体层面合理分析。我们需要使用面向对象思想来分析整个系统。 然而具体到微观操作时,仍然需要面向过程的思路去处理

面向对象更像是整体设计的框架,面向过程是具体实现的流程。

什么是面向对象

面向对象编程(Object-Oriented Programming, OOP)

面向对象编程的本质就是以类的方式组织代码,以对象的形式封装数据。

抽象

将多个对象的共同点抽取出来,变成一个类。、

从认识论的角度考虑,是先有对象后有类。 对象是具体的事物。类是抽象的,是对对象的抽象。

从代码运行的角度考虑是先有类后有对象。类是对象的模板。

对象的创建分析

构造器

创建了一个类后,即使什么都不写,程序也会给该类创建一个空的方法,即为构造器,也称作构造方法。在使用new关键字的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及调用类中的构造器。

构造器要满足一下两个特点:

1.必须和类的名字相同。

2.必须没有返回类型,也不能写void

构造器的核心作用有两个:

1.使用new关键字,本质是在调用构造器,所以类必须有构造器,否则会报错。

2.用来初始化值。

默认构造器

类中如果没有定义构造器,程序会自动生成一个默认构造器。

public class Person{
  //留空
}

class文件会显示为

public class Person{
  public person(){   
  //自动创建的构造方法
  }
}

无参构造

我们也可以显式定义一个构造器,常用于初始化一些默认信息。

public class Person{
  public person{
    this.name="小明"
  }
}

有参构造

定义了有参构建器后,如果还想使用无参构造,无参构建器必须显式声明

public class Person{
  public Person{}//显式声明无参构造
  public Person (String s){
    this.name=s
  }//有参构造
}

创建对象的内存分析

内存管理

Java的内存管理中有分为堆、栈和方法区。方法区在逻辑上属于堆的一部分,但一些简单的实现可能不会选择区进行垃圾收集或者进行压缩。所以往往把方法区视为独立于Java堆的内存空间。

类的初始化和静态方法

类在初始化时,内存会在方法区内储存,同时会一并初始化类中包含的静态方法,储存在静态方法区。类内存中的常量池内保存类的成员变量。

程序运行流程

程序的Main()方法会生成在栈中。当方法区内的类被new关键字调用构造的时候,会从方法区里的相应类内存中生成一个唯一的对象,并保存到堆中,且会在栈中创建指向到堆中内存的引用变量名。所有的对象属性会存在堆里相对应的内存空间里。

静态方法

静态方法会随着类在方法区中的初始化而初始化。使其可以被任何对象访问。

posted @ 2022-03-15 12:29  TommerHu  阅读(51)  评论(0编辑  收藏  举报