一.面向对象
概念:分为两个思维方式。面向过程和面向对象
- 面向过程:是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。比如:我让冰箱把大象放进去,冰箱把大象放进去的过程就叫做面向过程。
- 面向对象:是遇到一件事时,思考“我该让谁去做”,然后谁就是那个对象了。比如:我让冰箱把大象放进去,冰箱就是对象。
二.类
2.1 类的概述
类是用来描述一类具有共同属性和行为事物的统称。所以其实类在客观世界 里是不存在的,是抽象的,只是用来描述数据信息的。
2.2 类的组成
- 属性:就是该事物的状态信息。
- 行为:就是该事物能够做什么。
例如:
- 手机类:
- 属性:品牌,价格。。。
- 行为:打电话,打游戏,发短信
2.3 类的定义
类的定义步骤:
- 定义类
- 编写类的成员变量
- 编写类的成员方法
开始实战(让我们用代码爽一下!)
需求:
定义一个手机类,类名为(Phone),类的属性有:品牌,价格;类的行为: 打电话,发短信
三.对象(这里的对象不是你女朋友)
3.1 对象的概述
对象是类的一个实例,具体存在的,看得见摸得着的,并且具备该类事物的 属性和行为。
3.2 类和对象的关系
- 类是对一类具有共同属性和行为的事物的统称,是抽象的
- 对象是一类事物的具体实例,看得见,摸的着的,真实存在的实体,是具体的
- 对象是根据类来创建的
- 类中有什么属性和行为,对象就有什么属性和行为
对象:
什么是对象?
万物皆对象。它包括现实中客观存在的事物,也包括抽象的时间、规则、思维。简单点说,对象具有状态、行为和标识。
类:
什么是类?
具有相同特性和行为的对象组成的集合就是类,JAVA实际中的类就是指一个数据类型。
拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。
对比现实对象和软件对象,它们之间十分相似。
软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
四.成员变量和局部变量
五.封装
5.1 封装概述
封装,它也是面向对象思想的特征之一。面向对象共有三个特征:封装,继 承,多态。
封装表现:
- 方法就是一个最基本封装体。
- 类其实也是一个封装体。
- 一台电脑,它是由CPU、主板、显卡、内存、硬盘、电源等部件组长, 其实我们将这些部件组装在一起就可以使用电脑了,但是发现这些部件 都散落在外面,很容造成不安全因素,于是,使用机箱壳子,把这些部 件都装在里面,并在机箱壳上留下一些插口等,若不留插口,大家想想 会是什么情况。总结:机箱其实就是隐藏了办卡设备的细节,对外提供 了插口以及开关等访问内部细节的方式。
封装好处:
- 提高了代码的复用性。
- 隐藏了实现细节,还要对外提供可以访问的方式。
- 便于调用者的使用。 这是核心之一,也可以理解为就是封装的概念。
- 提高了安全性。
5.2 private关键字
private是一个权限修饰符,代表最小权限。
可以修饰成员变量和成员方法。
被private修饰后的成员变量和成员方法,只在本类中才能访问。
5.3 Get和Set方法
由于属性使用了private关键字修饰,在其他类中无法直接访问,所以得提供公 共的访问方法,我们把这张方法叫做set和get方法
- get方法: 提供“get变量名()”方法,用于获取成员变量的值,方法用 public修饰
- set方法: 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用 public修饰
5.4 this关键字
5.4.1 成员变量和局部变量同名问题
当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别 局部变量成员变量呢?可以在成员变量名前面加上this.来区别成员变量和局 部变量
this含义: this代表当前调用方法的引用,哪个对象调用this所在的方法, this就代表哪一个对象
5.4.2 this应用
六.构造方法
构造方法的定义格式:
构造方法的特点:
- 构造方法的方法名就是类名
- 构造方法没有返回值类型,连void都没有
- 使用new来调用构造方法
构造方法和set方法的区别:
- 构造方法用来创建对象,并给对象的属性赋初始值,只能赋值一次
- set方法用来给对象的属性赋值,可以赋值多次
构造方法的注意事项:
- 如果一个类没有定义构造方法,系统会自动生成一个 空参构造方法
- 如果一个类定义了构造方法,系统就不会再自动生成 空参构造方法
- 构造方法可以重载,一个类中可以有多个构造方法
6.1 标准类制作
七.继承
现实生生活中的继承
程序中的继承
6.1.2 继承的好处
- 提高代码的复用性(减少代码冗余,相同代码重复利用)。
- 类与类之间产生了关系,是多态的前提。
6.2 继承的格式
通过extends关键字,可以声明一个子类继承另外一个父类.
定义格式如下:
注意:
- 不要为了继承而继承
- Java中的类只能单继承,不能多继承(一个类只能有一个父类),但是可以有很多子类。
6.3继承后私有成员的访问规则
父类的私有成员不能被直接访问
6.4 继承后非私有成员的访问规则
当通过子类访问非私有成员时,先在子类中找,如果找到就使用子 类的,找不到就继续去父类中找。
6.5 继承后构造方法的访问规则
构造方法的名字是与类名一致的。所以子类是无法继承父类构造方 法的。
6.6 方法重写(Override)
方法重写 :
子类中出现与父类一模一样的方法时(返回值类型,方 法名和参数列表都相同),会出现覆盖效果,也称为重写或者复 写。声明不变,重新实现。
重写的注意事项:
- 方法重写一定要是父子类关系
- 方法重写要求返回值类型,方法名,参数列表要 相同
- 子类重写父类的方法,要求子类重写方法的访问 权限大于或者等于父类方法的权限
6.7 this和super关键字
- this:表示当前对象
this可以访问:本类的成员属性、成员方法、构造方法;
- super:表示父类对象
super可以访问:父类的成员属性、成员方法、构造方法;
6.7.2 this关键字的三种用法
- this访问本类成员变量: this.成员变量
- this访问本类成员方法: this.成员方法名();
- this访问本类构造方法: this()可以在本类的一个构造方法中,调 用另一个构造方法
6.7.3 super关键字的三种用法
- super访问父类的成员变量: super.父类成员变量名
- super访问父类的成员方法: super.成员方法名();
- super访问父类的构造方法: super()
6.7.4 super的注意事项
- super访问成员变量和成员方法: 优先去父类中找,如果有就直接 使用,如果没有就去爷爷类中找,如果有,就用,依次类推...
- 子类的构造方法默认会调用父类的空参构造方法,如果父类中的没 有空参构造方法,只定义了有参构造方法,会编译报错。
6.8 继承的特点
- Java中的类只支持单继承,不支持多继承。
- 一个类只能有一个父类,但可以有多个子类。
- 可以多层继承。
七.抽象类
7.1 抽象类的概述和定义
概述: 使用abstract关键字修饰的类就是抽象类
概述: 使用abstract关键字修饰的类就是抽象类
抽象类的定义:
7.2 抽象方法的概述和定义
概述:没有方法体,使用abstract修饰的方法就是抽象方法
抽象方法的定义:
7.3 抽象类的特点
- 抽象类不能被创建对象,就是用来做“父类”,被子类继承的。
- 抽象类不能被创建对象,但可以有“构造方法”——为成员属性初 始化。
- 抽象类中可以没有抽象方法,但抽象方法必须定义在抽象类中
- 子类继承抽象类后,必须重写抽象类中所有的抽象方法,否则子类 必须也是一个抽象类
总结一下,小小Java拿下