java学习之面向对象概念
思考的两种方式:
举例:
把大象放到冰箱里
一、面向过程 :【打开冰箱-》把大象放里面-》关上冰箱门】面向过程注重的是过程,也就是(动作【函数】),然后按照动作依次去执行就好了。
代表语言是C语言
二、面向对象:找到冰箱,做了封装【冰箱打开,冰箱存储,冰箱关闭】面向对象强调的是对象,面向对象强调的是对象(实体)。冰箱就是一个对象,本身具有的功能有:打开、关闭、 存储。
代表语言:C++,java,C#
面向对象的特点:
1、面向对象是常见的一种思想,符合人们的思考习惯。
2、面向对象的出现,将复杂的事情简单化了。
3、面向对象的出现,让在过程当中的执行者,变成了面向对象过程中的指挥者。
举例:
1、去科技市场攒机。
面向过程: 步骤:1、查看杂志,查看资料,
2、去询价,拿报价单。
3、组装电脑
面向对象: 步骤:找一个对象,比如说找个攒机高手一起去攒机,让他去查资料、询价、砍价、组装电脑。至于他怎么做,我们都不用管,我们只关注结果就好了。为什么找这个攒机 高手呢,因为他有这个功能。这样我们就能提高效率,并且能够发挥对象的最大功能。这里的攒机高手就是一个高手,他就有攒机的这些功能,我们直接调用就可以 了。
面试:1、面试官会问对面向对象的理解。首先要说出面向对象的三个特点,由于表述还有各个人理解的方式不一样。所以得举例。
首先他符合我们现在人的思考方式,他能够使复杂的事情简单化,由执行者变成指挥者。面试官,您本身就在用面向对象的方式思考问题:因为您的能力而言,软件项目您从 开发,测试都能够完成,但是特别耗时间,所以为了提高效率,您需要找专业编程能力的去写程序,我就是您要找的那个对象,我具备编程能力的功能。
多琢磨日常生活中的例子。
在进行java变成的时候,我们操纵的数据都是有所属的。一个人的年龄,高度,数据就存在在对象当中,找到对象就找到数据了。对象就是一种对数据的封装,考虑一个问题的时候,要知道其中存在哪些对象,找具有相关功能的对象去完成,然后去维护各个对象之间的关系。
二、面向对象的三个特征,只有具有这三个特征才会称之为面向对象编程。
1、封装
2、继承
3、多态
大象的能吃、能睡、能跑。这样是不可以的,面向对象语言,要体现其特征:大象很大,大象鼻子很长......
举个例子:人们开门,在人开门的过程当中。简单的分析,名词体现法,名词就是对象。两个对象:人、门。 “开”功能是归属人呢?还是门呢?诀窍:当我们创造对象的时候,这个就是要考虑的。基本判断规则:哪个对象对这个规则最清楚,就定义在谁上面。 在这个例子当中,人最清楚如何去使用门,开的功能是门所具备的,门最清楚如何怎么开,门开的的时候需要叶片,门轴这些东西,这些东西都在门里面,这些东西都得门去操作。人开门是调用的门的开的方法。
先分析有哪些对象,核心是对象。想实现功能,先考虑有哪些对象。
那么在之前没学对象的时候,那个类是什么东西呢?类跟对象有什么关系呢?
举个例子来说:
比如说现在我们有两辆汽车,如何描述这两个汽车呢?
首先汽车有4个轮子,汽车的颜色不一样。如果我们想生产汽车,必须要一张图纸。图纸要描述,我们要造一个小汽车。
图纸:这些小汽车都有轮胎数,都有颜色。
图纸的作用就是描述,小汽车这类事物。描述完之后,就开始造汽车了,汽车这个实体就是图纸的表现。
接下来,通过java语言来对现实事物进行描述,这里就是通过类来进行描述的。对于事物描述,我们只关注两个方面,一个是:属性(姓名、年龄);一个是:行为(功能,能干什么)。
属性是通过数值来体现,行为的体现是功能。这些就是类的特点:描述。java当中的类,来对现实生活的描述,包括属性和行为。
对象的产生,只要用new java类就得到了这个类的对象。对象就是类实实在在存在的个体。
那么如何定义这个类呢?在java当中定义类,要用class关键字声明,然后类里面声明类的属性还有类的功能。代码示例:
class Car
{ int num;//num成员变量这个声明了汽车的轮胎数
String s;//String成员方法这个声明了汽车的颜色
/**
*run()函数声明了这个类中的成员方法
*/
void run()
{ System.out.println(num+"-------"+s); } } class CarDemo
{ public static void main(String[] args)
{ Car c1 = new Car();//通过new关键词,这里声明了c1这个汽车对象,Car就是这个对象的类型
c1.num = 4;
c1.s = "red";
c1.run();//这里调用了这个对象的方法。 } }
那么这个对象在内存当中是如何表现的呢:
在写代码之前,一定要想好思路,因为代码是思想的一种体现。
定义类就是定义类中的成员。
两种成员:1、成员函数;2、成员变量。
成员变量是定义在类当中的,作用域为整个类,而局部变量是存在与函数当中的,只能存在于函数当中。
成员变量和局部变量的区别:
1、成员变量的是定义在类当中的,作用域为整个类。局部变量是定义在函数当中的,其作用域只存在于函数当中。
2、成员变量必须进行初始化,JVM在成员变量为空的情况下,会自动初始化其值。而局部变量必须人为初始化。
3、成员变量在堆当中随着对象的消亡而消亡,局部变量在栈当中,函数执行完之后,就会消亡。
4、成员变量在整个类当中都可以被访问,但是局部变量只能在自己的作用域当中即自己所在的函数当中被使用。
面向对象成员变量和面向对象局部变量同名的时候,会调用哪个呢?
class Car
{ int num;//成员变量,为空的时候是默认初始化,当我们给它赋值的时候是显示初始化:int num=4;这个就是显示初始化
String s; void run()
{ int num = 10;//局部变量,因为当他加载的时候是在栈当中,在栈当中找到之后,就不会去堆内存当中找了,此时打印的就是num=10
System.out.println(num+"-------"+s); } } class CarDemo
{ public static void main(String[] args)
{ Car c1 = new Car();
c1.num = 4;
c1.s = "red";
c1.run(); } }
当我们定义成员变量的时候,如果给其赋值,这个是显示初始化,如果不给他赋值的话 是默认初始化。同样当,成员变量和局部变量,在局部变量所在的作用域被调用的时候,会优先使用局部变量,因为局部变量在栈当中,和成员方法在一个内存区域,他就不会去堆内存当中去寻找了。
匿名对象:
什么是匿名对象?匿名对象顾名思义,就是没有名字的对象。比如现在我们定义一个
class Car
{ int num;
String color;
void run()
{ System.out.println(num+"----"+color); } } class CarDemo
{ public static void main(String[] args)
{ new Car().run(); } }
这里需要注意的是,在类CarDemo中我们直接new 了一个对象,并没有把这个对象赋给谁,那么这里的new Car()就是一个匿名对象,那么他在内存当中是如何存储的呢?
匿名对象的使用场景是:当只需要调用一次对象的属性或者方法的时候,可以使用匿名对象。
(tobecontinue)
class CarDemo
{ public static void main(String[] args)
{
int x = 3;
Vset(x);
System.out.print(x); }
public static void Vset(int x)
{ x =4; } } class CarDemo
{ int x = 3;
public static void main(String[] args)
{ CarDemo cd = new CarDemo();
Vset(cd);
System.out.print(d.x); } public static void Vset(CarDemo d)
{ d.x = 4; } }
java是一门面向对象的语言。那么什么叫做面向对象呢,这个意思是说在java当中一切皆为对象。
java学习之面向对象概念的更多相关文章
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- JAVA学习总结-面向对象
前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ...
- Java学习(一)--面向对象(一)
面向对象的思想一直指导者我们软件的分析.设计与开发.java语言是一种面向对象的语言.在学习java之前,先回想一以下向过程和面向对象. 一面向过程 面向过程主张按功能来划分系统需求.每一个功能都负责 ...
- 程序设计基础·Java学习笔记·面向对象(下)
Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...
- java学习之面向对象(4)
之前介绍了java面向对象三大特性之一封装,现在来说说三大特性之一继承和抽象类.这些只是我个人的认识,不足之处还请见谅. 1. 继承是面向对象的三大特征之一,那么何为继承呢? 继承是指一个对象直接使用 ...
- Java学习: 面向对象的使用与注意事项
面向对象的使用与注意事项 面向过程:当需要实现一个功能的时候,每一个具体的步骤都需要亲力,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做 ...
随机推荐
- linux_2.6内核内存缓冲与I/O调度机制:
http://blog.csdn.net/kaiwii/article/details/7030178 到底是BIO还是BH?答案是BIO与BH
- 《3D数学基础:图形与游戏开发》勘误
最近读这本书,读到四元素的乘法时,自己推导了一下公式,然后懵了,多方查阅,确定是书籍中的笔误(我读的是中文翻译版): 具体在Page147: 上图所示,在第二处明显与第一处的公式不一样. 在维基百科上 ...
- 各种语言HMAC SHA256实现
语言包含: Javascript ,PHP,Java,Groovy,C#,Objective C,Go,Ruby,Python,Perl,Dart,Swift,Rust,Powershell. Jav ...
- Unity3D GUI学习
Unity3D内置有GUI, 首先,使用GUI实现一个按钮,并且点击实现触发, void OnGUI() { //GUI.Button (new Rect (10,10,50,50), "n ...
- Android 开发笔记——通过 Intent 传递类对象
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
- angularjs kindEditor 中自定义按钮 弹出dialog
1.angular-kindeditor.js 第38行左右加 editorConfig.items = ["placehoder"]; 2.en.js 第234行 placeho ...
- JSP技术
1. JSP技术简介 JSP全称是Java Server Pages,它和servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.是sun公司定义的一种规范,JSP实际上就是Se ...
- 不用Google Adsense的84个赚钱方法
这是一个关于网络广告商和网络销售的汇总列表,可以用来为您的网站或博客赚点钱.广告商都是英文的,加入广告请确认其是否支持中国地区支持,不支持的话就不必加入了. Chitika : 购物中心旗帜广告. ( ...
- hdoj1847(博弈论)
代码: #include<stdio.h>int main(){ int N; while(scanf("%d",&N)!=EOF) printf(N%3==0 ...
- POJ 2391.Ombrophobic Bovines (最大流)
实际上是求最短的避雨时间. 首先将每个点拆成两个,一个连接源点,一个连接汇点,连接源点的点的容量为当前单的奶牛数,连接汇点的点为能容纳的奶牛数. floyd求任意两点互相到达的最短时间,二分最长时间, ...