面向对象:
什么是面向对象?
1、面向对象是基于面向过程,面向对象强调的对象,面向过程强调的是过程(函数)。
2、聊到面向对象,不得不提的就是它的三个思想特点:
A:更符合咱们人们的思考习惯。
B:把复杂的事情变得简单化。
C:把程序员从执行者变成了指挥者。
3、举例:
摊煎饼,买电脑(最好是能结合当时的场景来说)
4、万物皆对象。
面向对象(程序)开发:
就是不断的创建对象,使用对象,指挥对象做事情。
面向对象(程序)设计:
指的就是维护 各个对象之间的关系。
推荐:
UML统一建模语言
人:闫闳
三大特征:封装,继承,多态。
核心概念:
类: 属性和行为的集合,一个抽象的概念。
对象:类的具体体现,实现。
属性(成员变量):名词,用来描述事物身上的信息的
和以前咱们写局部变量一样,只不过位置发生改变,现在写在类中,方法外。
行为(成员方法):动词,事物能做什么
和以前咱们定义方法是一样的,先把static去掉。
Java语言最基本的单位是:类。
计算机最基本的存储单位是:字节。
如何使用类中的内容:
1、创建该类的对象。
格式: 类名 对象名 = new 类名();
Student s = new Student();
2、通过 对象. 的形式调用。
调用成员变量:
对象名.成员变量
调用成员方法:
对象名.成员方法
从现在开始,咱们可以在一个Java文件中写两个类,
一个是基本类,
一个是测试类(就是带main的类,用于测试基本类中的内容的)。
文件名必须和测试类的名字一致。
学生类:Student
属性:姓名name,年龄age,性别gender
行为:学习study,睡觉sleep
手机类:Phone
属性:品牌(brand) ,价格(price)
行为:打电话(call),发信息(sendMessage),玩游戏(playGame)
汽车类(Car)
属性:车的颜色(color),车的轮胎个数(num)
行为:车会跑(run)
内存:
栈:局部变量 代码的执行。
特点:先进后出。
用完就释放。
堆:所有new出来的东西(对象)
特点:
没有任何引用指向该对象,该对象就是垃圾,会在不确定的时间被GC(Java中的垃圾回收机制)回收。
局部变量和成员变量的区别:
1、在类中的定义位置不同。
局部变量:方法中,或者方法形参上。
成员变量:类中,方法外。
2、在内存中的存储位置不同。
局部变量:栈
成员变量:堆
3、生命周期不同。
局部变量:和方法相关。
成员变量:和对象相关。
4、初始化值不同。
局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
成员变量:有默认值。
整型:0
浮点型:0.0
字符:'\u0000'
布尔:false
引用类型:null
在使用变量的过程中, 查找变量的顺序是什么?
遵循”就近原则“,局部位置有就使用,没有就去成员位置找,有就是用,没有就报错(不严谨,先这样记忆)。
当我们看到一个方法的形参的数据类型是一个自定义类型的时候,其实要的就是这个类的对象
匿名对象:
概述:指的就是没有名字的对象。
应用:
A:当对 对象(成员)方法仅调用一次的时候。
B:匿名对象可以作为实际参数进行传递。
封装:
概述:隐藏对象的属性和实现细节,仅对外提供一个公共的访问方式。
怎么隐藏?
通过private关键字来实现封装。
private:
是一个权限修饰符。
可以用来修饰成员变量和成员方法
被它修饰的内容,只能在本类中被访问。
注意:暂时理解即刻,第十天还会重点讲。
权限修饰符:private 默认 protected public
封装指的就是private,这句话对吗?
不对,因为private仅仅是封装的一种体现,我们学过的类,函数都是封装的体现。
公共的访问方式是什么?
getXxx() 和 setXxx()方法
问:get() 和 set()必须成对出现吗?
不一定,看需求,如果只赋值就写set(),如果只获取值就写get().
因为我们现在还不是特别熟练,所以不管用不用,get()和set()都写上。
//getName() setName()
好处:
复用性。
安全性。
原则:
把不需要对外提供的内容给封装起来。
大白话解释:把所有的成员变量都封装起来。
this关键字:
概述:代表本类当前对象的引用。
大白话理解:谁调用,this就代表谁。
应用:
就是用来解决: 局部变量隐藏成员变量值的问题。
写类的格式:
class 类名 {
//成员变量 全部私有
//构造方法
//get()和set()方法
//成员方法
}
|
|