java面向对象通俗讲解(面向对象的学习经验分享01)
java面向对象通俗讲解(面向对象的学习经验分享01)一、Java面向对象的基本组成初学者接触最多的一句话就是Java是一门面向对象的编程语言,然而能理解的并不多,其实很多问题如果使用面向对象的思想去解答,会特别的合理,还能把很难的问题简单化,但实际开发中很少能做到这一点。程序的发展经历了两个主要阶段:面向过程、面向对象。对于面向对象与面向过程可以用一个例子解释,如一个木匠要做一个盒子,那么做这个盒子的出发点会有两种方式:面向对象:先想好要做的盒子,之后再去找相应的工具去做。面向过程:不去想要做什么样的盒子,随需取用工具。
程序猿冰冰
关注微信公众号【程序猿冰冰】,专注分享java干货和互联网趣事
大家好,我是冰冰,前段时间分享了java基础的一些知识,接下来几天会接着分享java面向对象的一些干货,希望对大家学习java的路上有所帮助!
什么是面向对象:
程序的发展经历了两个主要阶段:面向过程、面向对象。对于面向对象与面向过程可以用一个例子解释,如一个木匠要做一个盒子,那么做这个盒子的出发点会有两种方式:
面向对象:先想好要做的盒子,之后再去找相应的工具去做。
面向过程:不去想要做什么样的盒子,随需取用工具。
初学者接触最多的一句话就是Java是一门面向对象的编程语言,然而能理解的并不多,其实很多问题如果使用面向对象的思想去解答,会特别的合理,还能把很难的问题简单化,但实际开发中很少能做到这一点。
一、Java面向对象的基本组成
封装(Encapsulation):对外部不可见
继承(Inheritance):扩展类的功能
多态(Polymorphism):方法的重载、对象的多态性
Java类及类的成员:属性、方法、构造器;代码块、内部类
关键字:this、super、static、final、abstract、interface、package、import...
类和对象的关系
类:就是对现实生活中事物的描述。
对象:就是这类事物,实实在在存在的个体。
类的定义:
对象的定义:
示例图:
二、java内存机制:
JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈stack和堆heap这两个概念很重要,不了解清楚,后面很难搞懂
基本数据类型、局部变量都是存放在栈内存中的,用完就消失。new创建的实例化对象及数组,是存放在堆内存中的,用完之后jvm垃圾回收机制不定期自动消除。
Java把内存划分成两种:一种是栈内存,一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
堆内存用来存放由new创建的对象和数组。
在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。
引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。
如果想详细了解java堆栈问题,小编在整理一篇文章来详解。
三、属性(成员变量) vs 局部变量
局部变量和成员变量
1.定义的位置不一样【重点】
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类当中
2.作用范围不一样【重点】
局部变量:只有方法当中才可以使用,出了方法就不能再用
成员变量:整个类全都可以通用。
3.默认值不一样【重点】
局部变量:没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
4.内存的位置不一样(了解)
局部变量:位于栈内存
成员变量:位于堆内存
5.生命周期不一样(了解)
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
四、方法创建示例:
课堂小问:
1.面向对象思想编程内容的三条主线分别是什么
1、 类及类的成员:属性、方法、构造器;代码块、内部类
2、面向对象的三大特征:封装、继承、多态
3、关键字有哪些:
this、super、static、final、abstract、interface、package、import...
4、面向对象的编程思想?
(类、对象;面向对象的三大特征;。。。)
5、.谈谈你对面向对象中类和对象的理解,并指出二者的关系?
类:抽象的、概念上的内容
对象:实实在在存在的一个个体。