面向对象

面向对象:是一种以对象为中心的编程思想,通过指挥对象实现具体功能。

面向过程:是一种以过程为中心的编程思想,实现功能的每一步都是自己实现的。

类:类是现实社会生活中具有共同属性和行为的事物的抽象。

对象:是能够看得到摸得着的真实存在的实体。

属性:该事物的各种特征。例如学生的属性:姓名、年龄、毕业院校....

行为:该事物存在的功能。例如学生事物的行为:学习,编程,唱歌,运动...

类的定义

类的组成:属性和行为

属性:在代码中通过成员变量来体现(类中方法外的变量)

行为:在代码中通过成员方法来体现(和前面的方法相比去掉static关键字即可)

类的定义步骤:

  1. 定义类
  2. 编写类的成员变量
  3. 编写类的成员方法

封装

隐藏实现细节,仅仅对外暴露公共的访问方式

private关键字:是一个权限修饰符,可以用来修饰成员(变量、方法)

特点:只能在本类中进行访问,出了大括号就访问不了了

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

  • 提供get变量名();方法,用于获取成员变量的值,方法用public修饰
  • 提供set变量名(参数);方法,用于设置成员变量的值,方法用public修饰

当局部变量和成员变量如果出现重名问题,Java使用的是就近原则

this关键字:可以调用本类的成员(变量、方法)解决局部变量和成员变量重名问题。

this代表所在类的对象引用

  • 记住,方法被哪个对象调用,this就代表哪个对象

构造方法

构建、创建对象的时候,所调用的方法

格式:

1、方法名和类名相同,大小也要一致

2、没有返回值类型,连void也没有

3、没有具体的返回值(不能由return带回结果数据)

执行时机

1.创建对象的时候调用,每创建一次对象,就会执行一次构造方法

2.不能手动调用构造方法

构造方法的作用:

用于给对象的数据(属性)进行初始化

注意事项:

  1. 构造方法的创建
  • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法
  1. 构造方法的重载
  • 如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法
  1. 推荐的使用方式

无论是否使用,都手动书写无参数构造方法,和带参数构造方法

面向对象进阶

static关键字

概述:static关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法,成员变量

被static修饰的的成员变量,一般叫做静态变量

被static修饰的成员方法,一般叫做静态方法

被static修饰的特点:

  1. 被static修饰的成员,会被该类的所有对象所共享,是我们判断是否使用静态关键字的条件

  2. 被static的修饰的成员,会随着类的加载和加载,优先于对象的存在

对象需要类被加载后,才能创建

  1. 多了一种调用方式,可以通过类名.进行调用

也可以通过对象名调用

注意事项:

  1. 静态方法中,只能访问静态成员(成员变量,成员方法)
  2. 非静态方法中,可以使用静态方法也可以使用非静态方法
  3. 静态方法中,没有this关键字

继承

概述:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有成员

继承的格式:子类名 extends 父类名

Fu:是父类,也称为基类,超类

Zi:是子类,也被称为派生类

继承的好处与弊端:

好处:

  1. 提高了代码的复用性
  2. 提高了代码的维护性
  3. 让类与类产生了关系,是多态的前提

弊端:

  1. 继承是侵入性的

  2. 降低了代码的灵活性

继承关系,导致子类必须拥有父类非私有属性和方法,让子类自由的世界多了些约束

  1. 增强了代码的耦合性

代码与代码之间存在关联都可以称之为耦合

使用场景:

当类与类之间,存在相同的内容,并且产生了 is a 的关系,就可以考虑使用继承,来优化代码

特点:

Java只支持单继承,不支持多继承,但是支持多层继承

继承的成员变量访问特点:

this:代表本类对象的引用

super:代表父类存储空间标识(可以理解为父类对象引用)

面向对象_构造方法

继承中成员方法的访问特点:

通过子类对象访问一个方法:

  • 子类成员范围找
  • 父类成员范围找

方法重写:

  • 在继承体系中,子类出现了和父类一模一样的方法声明

应用场景:

当子类需要父类的功能,而功能主体子类有自己特有的功能,可以重写父类中的方法,这样既沿袭了父类中的功能,又定义了子类特有功能

注意事项:

父类中私有方法不能被重写

父类静态方法,子类必须通过静态方法进行重写,父类非静态方法,子类也必须通过非静态方法进行重写

静态方法不能够被重写

权限修饰符:

面向对象_成员变量_02