流行的编程思维_面向对象-1

流行的编程思维_面向对象-1

问题:

  • java面向对象的特征有哪些?
  • 面向对象与面向过程的区别是什么?
  • 基本数据类型与引用类型的区别有哪些?
  • 方法重载和方法重写的区别是什么?

说到面向对象,就得和比较一下面向过程

  • 面向过程是结构化开发,面向功能划分的软件结构

  • 从上到下,按步执行,最小的粒度是方法

  • 代码一次成型,后续修改非常麻烦,

  • 制约了软件的可维护性和可扩展性

面向对象开发

  • 把软件系统看成各种对象的集合
  • 系统结构稳定,由于java是单继承,可以多实现接口(特殊的抽象类)就多态了。
  • 子系统相对独立,由于面向对象有封装的特性。
  • 软件的可维护性,可扩展性强,由于面向对象有继承,多态的特性。

面向过程编程关注点在于每一个细节,每一步的具体操作。
面向对象关注点在于整个事件的参与对象,将系统中的
参与者全部看成模块化的对象。

面向对象程序设计(Object Oriented Programming)OOP
就是把世间万物都看成一个个对象,
OOP是一种编程思想,思维模式,将程序中的所有参与者
模块化为对象,然后通过各种对象之间的相互作用关系来
完成程序的需求。

类和对象

  • 类的静态特征通过属性来描述

    • 成员变量:定义在类中,方法体外的变量,属性,在堆中,会默认赋初值,作用域在整个类可见。
    • 局部变量:定义在方法体中的变量,在栈中,不会默认赋初值。double float:0.0
  • 类的动态功能通过方法来描述

    • 访问权限修饰符(public) 返回值类型(int) 方法名(参数列表-实质上是一个数组)
    • 方法重载-只在一个类中,重写-继承-接口,关系两个以上类
  • 每一个类都有一个默认的无参构造方法,该方法不需要创建,由类自动生成。

    • this(参数):只能在构造方法中使用,不能在普通方法中使用,并且必须写在构造方法的第一行。
  • 如果手动在类中创建一个有参构造,会将默认的无参构造抹掉

  • 类是静态的,写完之后就存在于硬盘中。

    • this关键字:指当前类
    • JVM中类只有一份,对象有多份。
  • 对象是动态的,随着程序的运行而创建,同时随着程序的关闭而销毁。

    • 垃圾回收机制GC:是一个独立的巡查线程,GC是一个定时任务,隔一段时间执行一次。
      GC线程随着main线程创建,也随main线程销毁而销毁。

基本数据类型与引用类型

基本数据在栈内存中开辟空间,同时直接将具体数值保存在栈中。

引用类型在栈中开辟空间,同时在堆中创建对象,将堆内存的地址保存在栈中,初始值都是null。

静态static

类是构成Java程序的单位,Java程序通过类来组织其结构。
对象是Java程序在运行时的单位,运行期间的Java程序是通过多个对象之间的相互作用关系来完成需求,动态。

开发代码时,是通过编写类来完成程序的需求。
程序在运行期:1.将编写好的类加载到JVM中,有了模版。
2.根据需求通过模版(类)来创建对应的对象,完成业务需求。

public class Application {
    //只有静态成员变量(类的所以对象共享),没有静态局部变量
    static int a;
    //1
    static {
        System.out.println("JVM在类初始化的时候只加载一次");
    }
    //2
    {

    }
    //3
    public Application(){

    }
}

JMM

独占区就是线程自己的方法栈,线程公享区指的是方法区和堆。实例方法存储在方法栈中,静态方法存储在方法区中。

对于线程来说,线程中有多个类的对象,共享区确实是堆和方法区






备注:






原文地址:https://www.cnblogs.com/k-class/p/13679437.html