[java学习笔记]java语言核心----面向对象基础
1.面向对象概述
面向对象是java语言的核心。是对应于面向过程而言的。
- 面向过程:强调的是过程,即动作。在java中动作就是函数。C语言就是面向过程的。
如:把大象装进冰箱需要几步?
答:需要三步:
- 打开冰箱
- 把大象装进去
- 关上冰箱
我们把上面的问题,用面对对象的思想来考虑。
我们把冰箱作为一个对象,它具备打开,存储,关闭的功能。这个时候,我们就只需要冰箱这个对象就可以完成把大象装进冰箱中。即,冰箱打开,存储,冰箱关闭。
- 面向对象的特点:
- 面向对象是一种常见的思想,符合人们的思考习惯。
- 面向对象的出现,把复杂的东西简单化了。
- 面向对象的出现,让面向过程中的执行者变成了面向对象中的指挥者。
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语言核心----面向对象基础的更多相关文章
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- JavaSE学习笔记(2)---面向对象基础
JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...
- 【疯狂Java学习笔记】【理解面向对象】
[学习笔记]1.Java语言是纯粹的面向对象语言,这体现在Java完全支持面向对象的三大基本特征:封装.继承.多态.抽象也是面向对象的重要组成部分,不过它不是面向对象的特征之一,因为所有的编程语言都需 ...
- 我的Java学习笔记-Java面向对象
今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...
- Java学习笔记-Java概述和环境配置
基础常识 软件:一系列按照特定顺序组织的计算机数据 和指令的集合 常见的软件: 系统软件:如:DOS,windows,Linux等 应用软件:如:扫雷,迅雷,QQ等 软件的出现实现了人与计算机之间的更 ...
- java学习笔记----java入门
java基础 一.java语言跨平台原理 1.什么是跨平台? 跨平台就是一个软件可以在不同的操作系统中运行,但是不需要对其修改.换句话说,java语言编写的软件在不做修改的情况下就能在不同的系统平台上 ...
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- [Java学习笔记] Java异常机制(也许是全网最独特视角)
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
随机推荐
- [AngularJS] $http cache
By default your HTTP requests with the $https service in Angular are not cached. By setting some opt ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- C语言面试题大汇总
static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么差别?1) 引用必须被初始化,指针不必.2) 引用初始化以后不能被改变,指针能够改变所指的对象. ...
- MAC JAVA 环境变量那些事
1,查看 JAVA 的版本号 akdeMacBook-Pro:bin AK$ java -version java version "1.6.0_65" Java(TM) SE R ...
- Getting started with Apache Camel--转载
原文地址:http://www.javacodegeeks.com/2012/12/getting-started-with-apache-camel.html About Camel: Apache ...
- 炼数成金hadoop视频干货03
视频地址:http://pan.baidu.com/s/1dDEgKwD 着重介绍了HDFS 运行了示例程序wordcount,自己也试了一遍(用的伪分布式) 1.建立数据(和讲师的操作有些不一样,不 ...
- 防火墙导致FTP传输文件为0
在使用 ftpClient 传输文件到FTPserver时,在别的机器上可以正常使用,但是到自己的机器有就始终是0文件,发现是Mcafee 防火墙导致的,只要让防火墙放行即可. Mcafee防火墙的放 ...
- 二维线段树 HDU 1823最简单的入门题
xiaoz 征婚,首先输入M,表示有M个操作. 借下来M行,对每一行 Ih a l I 表示有一个MM报名,H是高度, a是活泼度,L是缘分. 或 Q h1 h2 a1 a2 求 ...
- 使用 Feedly RSS阅读器订阅技术大牛的博客
这几天一直都在自己看书,可是书上面的东西都比较落后一点,而且没有大牛博文上的东西讲的深入,可是来回跳转各位大牛的博客又非常的麻烦,有一些公众账号虽然也会推荐一些知识内容,可是你应该有过看到多个公众号发 ...
- nagios–配置文件
ngios的配置文件位于/etc/nagios目录下 # ll /etc/nagios 总用量 -rw-rw-r-- nagios nagios 3月 : cgi.cfg -rw-r--r-- roo ...