面向对象

面向对象

是一种解决问题的方案,遇到问题不去分析怎么具体的解决,直接去找已实现需求的封装类来解决问题.使开发人员从劳动者变成指挥者.

面向过程:在程序中的组成就是就是函数,由若干个类组成
面向对象:在程序中的组成就是类(封装了函数),由若干个类组成.
两者配合使用

类和对象的关系

类: 是用来描述生活中的某一类的事物,是一类事物具有的共性内容.
对象:类创造出来的实体

局部变量和成员变量的区别

1、从定义上来讲:
    局部变量定义在函数中。
    成员变量定义在类中。
2、从内存存储上来讲:
    局部变量随着函数的运行会在栈内存中出现,局部变量存储在栈内存中。
    成员变量会随着对象的出现在堆中存在,成员变量存储在堆内存中。
3、从初始值上来讲:
    局部变量在定义时需要指定初始值(局部变量没有默认值),只有初始化之后才能使用。
    成员变量可以不用初始化,有默认值。
4、从存活时间上来讲(生命周期)
    局部变量是随着函数的进栈在函数所属的栈内存中存在,随着函数的出栈就消失。
    成员变量是随着对象的出现在堆中出现。随着对象的消失而消失。

三大特征

1. 封装

对事物进行封装.封装会造成事物的部分细节被隐藏.
 函数封装完成某个功能的代码
  类封装了某个事物的属性和行为

好处
1)可以隐藏事物的细节(提高安全性),不对外提供直接访问,通过get,set方法间接访问
2)提高代码的复用性

构造函数

创建(new)对象时自动调用的函数
格式:修饰符 函数名(参数列表){}//函数名与类名一致
作用: 给函数初始化用的

默认无参构造函数
this的应用:
1、this是用来记录当前调用这个函数的这个对象的地址。
2、this可以在构造函数中完成调用其他的构造函数。格式 this( 实际参数 );
3、this可以区分成员变量和局部变量。格式:this.成员变量名 ;
static关键字
1、 被static修饰的成员函数,称为静态成员函数。
2、 通常在访问静态函数的方式是通过类名来访问。    类名.函数名(实际参数)
3、 访问静态成员函数的方式:  类名.静态函数名(参数列表)。
4、 只要一个函数被static关键字所修饰,那么这个函数就和对象没有关系了,只和类有关系。
5、 在静态函数中不能使用非静态成员变量。
静态函数使用注意事项(重要,难理解)
1、静态函数,也称为类函数。使用类名去调用静态的函数。
非静态的函数,也称为实例函数。使用对象名(实例名)来调用实例函数。
2、静态关键字 static 是一个修饰符。可以修饰类中的成员函数和成员变量。不能修饰构造函数。
3、静态函数它是在类加载的时候,就在内存中加载完成,可以直接运行的函数。
非静态函数,它的运行必须是在类加载完成之后,通过new关键字创建出对象之后,通过对象才能调用。
4、静态函数中不能调用非静态函数。
因为静态函数在类加载完成之后通过类名可以直接调用,而这时很有可能还没有创建对象。非静态函数必须依赖于对象才能运行。
5、非静态函数中是可以调用静态函数的。
当非静态函数可以运行的时候,在内存中一定有个对象,既然有对象了,就说明对象所属的那个类肯定已经被加载完成了。类都加载完成了,静态函数已经准备就绪。
6、静态函数中不能使用 this 和 super 关键字。
this关键字它表示的是当前调用这个函数的那个对象。而在静态函数中是没有对象的。
静态成员变量和非静态成员变量的区别(掌握)
1、它们在内存中出现的时间不同:
静态成员变量:它是在加载当前这个类的时候,就在方法区的静态区中存在。
非静态成员变量:当创建这个类的对象的时候,随着对象的产生在堆中出现。
2、它们所在的内存区域不同:
静态成员变量:在方法区的静态区中。
非静态成员变量:堆内存中。
3、它们的初始化时间不同:
静态成员变量:在类加载的时候就会初始化,类加载完成,变量已经初始化结束。
非静态成员变量:它是在对象的创建过程中被初始化。
4、它们的生命周期不同:
静态成员变量:它随着类的加载就在方法区的静态区中一直存在。直到jvm虚拟机关闭,类从方法区消失,静态成员变量才会消失。
非静态成员变量:它是随着对象的产生而存在,随着对象的消失就消失。
类的加载过程:
1、启动JVM,加载程序中需要使用的class文件。
2、在加载class文件的时候,所有的静态内容(静态成员变量,静态成员函数,静态代码块)都要加载到方法区的静态区中。
3、当类中的所有静态加载完成之后,开始给类中的所有静态成员变量默认初始化。
4、类中的所有静态成员变量默认初始化完成之后,开始给这些静态成员变量显示赋值。
5、所有静态成员变量显示赋值结束之后,开始运行类中的静态代码块。
6、当所有的静态代码块执行完成,代表当前这个class文件才彻底被加载结束。
对象的创建过程:
1、使用new关键字创建对象,在堆中给对象分配内存空间。
2、给对象所属类中的所有非静态成员变量分配空间并进行默认的初始化。
3、执行和new对象时传递参数一致的构造函数。
4、执行构造函数的的过程中有隐式的三步:
    4.1、执行super() 语句,找父类的空参数构造函数
    4.2、给非静态成员变量进行显示赋值。
    4.3、运行构造代码块
    4.4、构造函数中的自己写的代码执行。
5、构造函数执行完成,对象创建结束。

2. 继承

3. 多态

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容