面向对象进阶(Java程序设计)

落红不是无情物,化作春泥更护花。
点赞再来,养成习惯。


文章目录
1.成员变量
2.this关键字
3.隐藏和封装
4.static关键字
学习目标

面向对象进阶(Java程序设计)_第1张图片


成员变量

类的成员变量和类变量区别:
类的成员分为属性和方法,属性其实就是类的成员变
量,也称为全局变量,除了类的成员变量外,类的方法也
可以声明变量,我们称局部变量。

类中的成员变量在整个类范围都可以使用,包括类中的方法而方法中定义的局部变量作用域只能在方法中使用。
成员变量分为类属性和实例属性两种,定义属性时没有加Static修饰符修饰的就是实例属性,代表该类的每个对象都拥有该属性。而加了static修饰的属性称为类属性,属于类所有,整个项目中仅此一份,属于共享使用。

语法

[ <修饰符> ] [ static ] [ final ] <变量类型> <变量名>

(1)static:表示一个类的成员变量,即静态成员变量。
(2)final:表示是一个常量。

示例代码:
面向对象进阶(Java程序设计)_第2张图片

面向对象进阶(Java程序设计)_第3张图片

面向对象进阶(Java程序设计)_第4张图片

顶部

this关键字

this关键字和方法调用:
在类的定义时通过this关键字可访问到该类的实例属性,this其实就个指向当前类的对象的地址。最大的作用:让类中的个方法访问该类中的另个方
法或实例成员变量。

通过THIS关键字来解决成员变量和局部变量同名的问题

  • this :代表当前对象的引用(谁调用就代表谁)。
  • this.成员变量 ‐‐ 本类的
  • this.成员方法名() ‐‐ 本类的
  • this(…) ‐‐ 本类的构造方法

示例:
面向对象进阶(Java程序设计)_第5张图片

面向对象进阶(Java程序设计)_第6张图片

面向对象进阶(Java程序设计)_第7张图片

顶部

隐藏和封装

类的成员封装:
封装是面向对象三大特征之一,封装的主要意思:将该隐藏的隐藏,该开放的开发
封装目的是提高项目中属性或方法的安全性,隐藏内部实现细节。

JAVA中的封装可以实现以下目的:

  • 1.隐藏类的实现细节
  • 2.让使用者能通过事先预定的方法访问数据
  • 3.可以对数据进行检查提高数据的可用性
  • 4.便于修改,提高代码的可维护性

原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。

封装的步骤
(1) 使用 private 关键字来修饰成员变量。
(2) 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。

封装的操作——private关键字
private的含义
(1) private是一个权限修饰符,代表最小权限。
(2)可以修饰成员变量和成员方法。
(3) 被private修饰后的成员变量和成员方法,只在本类中才能访问。

private的使用格式

private 数据类型 变量名 ;

1 . 使用 private 修饰成员变量,代码如下:
2.
2 . 提供 getXxx 方法 / setXxx 方法,可以访问成员变量,代码如下:
面向对象进阶(Java程序设计)_第8张图片
封装优化1——this关键字

this的含义
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。

this使用格式

this.成员变量名;

3 .使用 this 修饰方法中的变量,解决成员变量被隐藏的问题,代码如下:
面向对象进阶(Java程序设计)_第9张图片
小贴士:方法中只有一个变量名时,默认也是使用 this 修饰,可以省略不写。

封装优化2——构造方法

当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
小贴士:无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法, 一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。

构造方法的定义格式
在这里插入图片描述
构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。使用 构造方法后,代码如下

面向对象进阶(Java程序设计)_第10张图片

注意事项
1 . 如果你不提供构造方法,系统会给出无参数构造方法。
2 . 如果你提供了构造方法,系统将不再提供无参数构造方法。
3 . 构造方法是可以重载的,既可以定义参数,也可以不定义参数。

标准代码——JavaBean(扩展)
JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的 set 和 get 方法。
面向对象进阶(Java程序设计)_第11张图片
编写符合 JavaBean 规范的类,以学生类为例,标准代码如下:
面向对象进阶(Java程序设计)_第12张图片
测试类,代码如下:
面向对象进阶(Java程序设计)_第13张图片
面向对象进阶(Java程序设计)_第14张图片

顶部

static关键字

概述
关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

类变量
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
类变量:使用 static关键字修饰的成员变量。

定义格式:
在这里插入图片描述
示例:比如说,基础班新班开班,学员报到。现在想为每一位新来报到的同学编学号(sid),从第一名同学开始,sid为 1,以此类推。学号必须是唯一的,连续的,并且与班级的人数相符,这样以便知道,要分配给下一名新同学的学 号是多少。这样我们就需要一个变量,与单独的每一个学生对象无关,而是与整个班级同学数量有关。
所以,我们可以这样定义一个静态变量numberOfStudent,代码如下:
面向对象进阶(Java程序设计)_第15张图片
面向对象进阶(Java程序设计)_第16张图片
静态方法
当 static 修饰成员方法时,该方法称为类方法 。静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象。调用方式非常简单。

类方法:使用 static关键字修饰的成员方法,习惯称为静态方法。

定义格式:
在这里插入图片描述

静态方法调用的注意事项:

  • 静态方法可以直接访问类变量和静态方法。
  • 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
  • 静态方法中,不能使用this关键字。

小贴士:静态方法只能访问静态成员。

调用格式
被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属 于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。

格式:
面向对象进阶(Java程序设计)_第17张图片
调用演示,代码如下:
面向对象进阶(Java程序设计)_第18张图片
静态原理图解

static 修饰的内容:

  • 是随着类的加载而加载的,且只加载一次。
  • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
  • 它优先于对象存在,所以,可以被所有对象共享。
    面向对象进阶(Java程序设计)_第19张图片

静态代码块

  • 静态代码块:定义在成员位置,使用static修饰的代码块{ }。
  • 位置:类中方法外。
  • 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。

格式:
面向对象进阶(Java程序设计)_第20张图片

作用:给类变量进行初始化赋值。用法演示,代码如下:

面向对象进阶(Java程序设计)_第21张图片
小贴士:static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况 下,去调用方法。
Arrays类,Math类两个工具类,能体现static 方法的便利。


顶部

学习目标

  • 能够说出成员变量和局部变量的区别
  • 能够理解private关键字的含义
  • 能够说出this关键字可以解决的问题
  • 能够理解构造方法的含义
  • 能够用封装的思想定义一个标准类
  • 能够理解static关键字
  • 能够写出静态代码块的格式
  • 【微信公众号】星沅传
  • 愿你和我一起成长-星沅
  • 持续《面向对象(Java程序设计)》的学习
  • 会持续更新后面的学习

面向对象进阶(Java程序设计)_第22张图片

你可能感兴趣的:(Java,java)