zoukankan      html  css  js  c++  java
  • [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.默认初始化值:

    • 成员变量都有默认初始化值。
    • 局部变量没有默认初始化值。
  • 相关阅读:
    (转)eclipse使用技巧
    smartupload 上传文件时 把页面编码改成gbk 解决乱码
    引入外部js如何通知页面其编码格式
    OGNL表达式中的#、%和$
    javaweb提示框问题
    理解iOS 8中的Self Sizing Cells和Dynamic Type
    淘宝内部的兼容大屏幕iPhone设计流程
    ReactiveCocoa & MVVM 学习总结一
    ReactiveCocoa & MVVM 学习总结二
    Objective-C GCC Code Block Evaluation C Extension ({…})语法
  • 原文地址:https://www.cnblogs.com/ma-fei/p/4860210.html
Copyright © 2011-2022 走看看