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.默认初始化值:

  • 成员变量都有默认初始化值。
  • 局部变量没有默认初始化值。

[java学习笔记]java语言核心----面向对象基础的更多相关文章

  1. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  2. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  3. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  4. JavaSE学习笔记(2)---面向对象基础

    JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...

  5. 【疯狂Java学习笔记】【理解面向对象】

    [学习笔记]1.Java语言是纯粹的面向对象语言,这体现在Java完全支持面向对象的三大基本特征:封装.继承.多态.抽象也是面向对象的重要组成部分,不过它不是面向对象的特征之一,因为所有的编程语言都需 ...

  6. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  7. Java学习笔记-Java概述和环境配置

    基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更 ...

  8. java学习笔记----java入门

    java基础 一.java语言跨平台原理 1.什么是跨平台? 跨平台就是一个软件可以在不同的操作系统中运行,但是不需要对其修改.换句话说,java语言编写的软件在不做修改的情况下就能在不同的系统平台上 ...

  9. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  10. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

随机推荐

  1. [Canvas] Make Canvas Responsive to Pixel Ratio

    Canvas is great for high performance graphics rendering but by default the results look blocky on ph ...

  2. SQL SERVER 中identity用法

    在数据库中, 常用的一个流水编号通常会使用 identity 栏位来进行设置, 这种编号的好处是一定不会重覆, 而且一定是唯一的, 这对table中的唯一值特性很重要, 通常用来做客户编号, 订单编号 ...

  3. debian7 oracle11g 解决 link binaries 错误方案

    ln -s /etc /etc/rc.d ln -s /usr/bin/awk /bin/awk ln -s /usr/bin/basename /bin/basename ln -s /usr/bi ...

  4. B - Broken Keyboard (a.k.a. Beiju Text)

    Problem B Broken Keyboard (a.k.a. Beiju Text) You're typing a long text with a broken keyboard. Well ...

  5. 解决Android&eclipse无法RunAs的问题

    application不能运行,console显示 The connection to adb is down, and a severe error has occured. You must re ...

  6. 给jdk写注释系列之jdk1.6容器(13)-总结篇之Java集合与数据结构

         是的,这篇blogs是一个总结篇,最开始的时候我提到过,对于java容器或集合的学习也可以看做是对数据结构的学习与应用.在前面我们分析了很多的java容器,也接触了好多种常用的数据结构,今天 ...

  7. javaweb学习总结十四(xml约束之Schema)

    一:schema约束简单介绍 1:xml Schema的定义以及优缺点 2:xml schema入门 3:命名空间 这里http://www.itcast.cn 并没有什么具体的意义,只是命名而已. ...

  8. [未完成][Mooc]关于线程的总结

    进程和线程.Eclipse,QQ都是进程.是程序或者任务的执行过程,是动态性.持有资源(共享内存,共享文件)和线程. 这个资源就是内存. 每个程序在运行的时候都会分配一些内存. Eclipse中的源代 ...

  9. Visual Studio Team Foundation Server 2015(TFS 秘钥、序列号)

    Visual Studio Team Foundation Server 2015 序列号:PTBNK-HVGCM-HB2GW-MXWMH-T3BJQ

  10. php 学习笔记

    //本文转自:http://www.cnblogs.com/ronghua/p/6002995.html //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. ...