• [java学习笔记]java语言核心----面向对象基础


    1.面向对象概述

    面向对象是java语言的核心。是对应于面向过程而言的。

    • 面向过程:强调的是过程,即动作。在java中动作就是函数。C语言就是面向过程的。

    如:把大象装进冰箱需要几步?

    答:需要三步:

    1. 打开冰箱
    2. 把大象装进去
    3. 关上冰箱

    我们把上面的问题,用面对对象的思想来考虑。

    我们把冰箱作为一个对象,它具备打开,存储,关闭的功能。这个时候,我们就只需要冰箱这个对象就可以完成把大象装进冰箱中。即,冰箱打开,存储,冰箱关闭。

    • 面向对象的特点:
    1. 面向对象是一种常见的思想,符合人们的思考习惯。
    2. 面向对象的出现,把复杂的东西简单化了。
    3. 面向对象的出现,让面向过程中的执行者变成了面向对象中的指挥者。

    2.类和对象的联系

    我们可以用类(class)来描述事物的特点,一般需要定义属性和行为。

    如:我们可以创建一个Car类用来描述轿车类。

    class Car{
        int trieNum;//定义轿车类的轮胎数
        String paintColor;//定义轿车类的喷漆颜色
        
        //定义一个轿车行驶的行为
        void run(){
            System.out.println(trie+"个轮胎“+paintColor+”色的轿车正在行驶...");
        }
    }

    接下来,我们使用new关键字来创建一个Car类的对象,来执行行驶的行为。

    class Test{ 
        public static void main(String[] args){
            Car myCar = new Car();//通过new关键字来创建一个Car类的对象,用Car类型的变量来接收
            myCar.trieNum = 4;//设置Car对象的轮胎数为4
            myCar.paintColor = "red";//设置Car对象的颜色为"red"
             myCar.run();//用创建的Car类对象来执行行驶方法
        }
    }

    程序运行的结果为:4个轮胎red色的轿车正在行驶...

    注意:类的对象在堆内存中,所以类的属性都有相应的默认值,即使不设置轮胎数和颜色,也可以运行,结果为:0个轮胎null色的轿车正在行驶...

    考虑如下代码在内存中分配

    Car c1 = new Car();
    Car c2 = c1;
     
    c1.trieNum = 5;
    c2.paintColor = "red";
    
    c1.run();

    说明:第一句代码,在栈内存中创建一个Car类型的c1变量,接着在堆内存中创建一个Car类的实例对象,并分配一个地址值,在这个实例中,有两个变量,分别是int型的trieNum和String类型的paintColor并初始化为0和null;最后把这个地址值赋给c1.

    第二句代码是说把c1的值,即指向堆内存中实例的地址值,赋值给c2,这样c1和c2同时指向了堆内存中的同一个实例。

    然后用c1或c2操作时,其实操作的是一个对象,所以最后运行c1的run方法,得到的结果是:5个轮胎red色的轿车正在行驶...

    3.局部变量和成员变量的区别

    1.作用域:

    • 局部变量定义在函数,语句,局部代码块中,只有在所属的区域有效。
    • 成员变量定义在类中,整个类的范围都可以访问。

    2.内存中的分布:

    • 局部变量存在于栈内存的方法区中。
    • 成员变量存在于堆内存中的实例对象中。

    3.存活的时间:

    • 成员变量随着对象的创建而存在,随着对象的消失而消失。
    • 局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。

    4.默认初始化值:

    • 成员变量都有默认初始化值。
    • 局部变量没有默认初始化值。
  • 相关阅读:
    使用Jenkins 生成 Allure 报告时出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错误
    【Chrome】插件开发
    云笔记软件简评
    使用Jekyll + Github Pages搭建静态网站
    Windows和Linux的不同换行符导致脚本执行异常
    使用 Hugo + Github Pages 创建静态网站博客
    Vercel关闭评论 禁止Preview Deployments
    Github SubModule 指南
    epoll高效的原理
    xlrd读取Excel文件报错,for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(,raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format] '; not supported')
  • 原文地址:https://www.cnblogs.com/ma-fei/p/4860210.html
Copyright © 2020-2023  润新知