面向对象和封装

面向对象思想的概述和举例

面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。

面向对象:当需要实现一个功能的时候,不关心具体步骤,而是找一个已有该功能的人,来帮我做事。

举例:

     洗衣服:

         面向过程:把衣服脱下来--> 找一个盆--> 放点洗衣粉--> 加点水--> 浸泡10分钟--> 揉一揉--> 请洗衣服--> 拧干--> 晾起来

         面向对象:把衣服脱下来--> 打开全自动洗衣机--> 扔衣服--> 按钮--> 晾起来

区别:

     面向过程:强调步骤

     面向对象:强调对象,这里的对象就是洗衣机

特点:面向对象是一种更符合我们思考习惯的思想,他可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征:封装、继承和多态

类和对象

什么是类:是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类的事物

现实中,描述一类事物:

 属性:就是该事物的状态信息。

 行为:就是改事物能够做什么。

举例:小猫。

 属性:名字、体重、年龄、颜色。

 行为:走、跑、叫

什么是对象:是一类事物的具体表现,对象是类的一个实例(对象并不是找一个女朋友),必然具备该类事物的属性行为

举例:小猫。

 属性:tom、5kg、2years、yellow

 行为:溜墙根走、蹦跶的跑、喵喵叫

类和对象的关系

    类是对一类事物的描述,是抽象的;对象是一类事物的实例,是具体的;类是对象的模板,对象是类的实体。

类的定义

定义一个类,用来模拟“学生”事物。其中就有两个组成成分:

属性(是什么):

     姓名

     年龄

行为(能做什么)

    吃饭

     睡觉

     学习

对应到Java的类当中:

成员变量(属性):

    String name; // 姓名

      int age; // 年龄

成员方法(行为):

     public void eat() {} // 吃饭

     public void sleep() {} // 睡觉

     public void student() {} // 学习


注意事项:

      1、成员变量是直接定义在类当中的,在方法外面。

      2、成员方法不要写static关键字。

对象的创建及其使用

通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。

类的创建及使用对象的过程:

1、导包:也就是需要指出使用的类,在什么位置。

import 包名称.类名称;

import Demo_02.Student_001

对于和当前类属于同一个包的情况,可以省略导包语句不写。

2、创建,格式:

类名称 对象名 = new 类名称();

Student stu = new Student();

3、使用,分为两种情况:

使用成员变量:对象名.成员变量名

使用成员方法:对象名.成员方法名(参数)

(也就是,想用谁,就用对象名点儿谁。)

M_002_Student
M_003_Student

练习_手机类练习

M_004_Phone
M_005_PhoneOne 

一个对象的内存图

两个对象使用同一个方法的内存图

两个引用指向同一个对象的内存图

使用对象类型作为方法的参数

使用对象类型作为方法的返回值

成员变量和局部变量

1、定义的位置不一样【重点】

局部变量:在方法的不一样

成员变量:在方法的外部,直接写在类当中

2、作用范围不一样【重点】

局部变量:只有方法当中才可以使用,出了方法不能再用

成员变量:整个前部都可以通用

3、默认值不一样【重点】

局部变量:没有默认值,如过想要使用,必须手动进行赋值

成员变量:如果没有赋值,会有默认值,规则和数组一样

4、内存的位置不一样(了解)

局部变量:位于栈内存

成员变量:位于堆内存

5、生命周期不一样(了解)

局部变量:随着方法进栈而诞生,随着方法出战而消失

成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

面向对象三大特征之封装性

面向对象三大特征:封装、继承、多态。

封装性在Java当中的体现:

1、方法就是一种封装

2、关键字private也是一种封装

封装就是将一些细节信息隐藏起来,对于外界不可见。

private关键字的作用及其使用

问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。

解决方案:用private关键字将需要保护的成员变量进行修饰。


一旦使用了private进行修饰,那么本类当中仍然可以随意访问。

但是!超出了本类返回之外就不能再直接访问了。


间接访问private成员变量,就是定义一对Getter/Setter方法


必须叫setXxx或者是getXxx命名规则。

对于Getter来说,不能有参数,返回值类型和成员变量对应。

对于Setter来说,不能有返回值,参数类型和成员变量对应。

练习使用private关键字定义

对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则的不变

this关键字的作用

当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。

如果需要访问本类当中的成员变量,需要使用格式:

this.成员变量名


 “通过谁调用的方法,谁就是this。”

如何定义一个标准的类

 一个标准的类通常要拥有下面四个部分

1、所有的成员变量都要使用private关键字修饰

2、为每一个成员变量编写一对Getter/Setter方法

3、编写一个无参数的构造方法

4、编写一个有参数的构造方法

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