• 流行的编程思维_面向对象-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

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

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






    备注:






  • 相关阅读:
    Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)
    使用nginx sticky实现基于cookie的负载均衡
    CENTOS 6.6初始化SHELL脚本
    Java 开源博客 Solo 1.2.0 发布
    Java 开源博客 Solo 1.2.0 发布
    Java多线程-synchronized关键字
    Maven项目pom.xml配置详解
    4.0 苹果系统安装之黑苹果(4)
    3.0 Windows和Linux双系统安装(3)
    2.0 Linux系统的安装之Fedora安装单系统(2)
  • 原文地址:https://www.cnblogs.com/k-class/p/13679437.html
Copyright © 2020-2023  润新知