java之类与对象(十一)

上周我们已经学完了面向过程的编程,一些数据类型,数组,运算符和表达式及流程控制的方法,那我们这周就来开启新篇章吧!
面向对象程序设计核心就是类和对象了,类是某一类事物的描述,比较抽象,而对象是具体的,是通过类来创建的


类是由数据成员与函数成员封装而成的,其中数据成员是表示类的属性,函数成员表示类的行为
其一般结构为

[类修饰符] class 类名称
{
	[修饰符] 数据类型 成员变量名称;
	...
	[修饰符] 返回值的数据类型 方法名(参数1, 参数2, ......)
		{
			语句序列;
			return [表达式];
		}
		...
}

其中类修饰符的含义如下表所示

修饰符 含义
public 将一个类声明为公共类,可以被任何对象访问
abstract 将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示不能被其它类所继承
缺省 缺省修饰符时,则表示只有在相同包中的对象才能使用这样的类

一个类可以有多个修饰符,且无先后顺序之分,但abstract和final对立,不能同时应用在一个类的定义里

成员变量
描述该类的内部信息
格式如下

[修饰符] 变量类型 变量名 [ =初值];

其成员变量的修饰符的含义

修饰符 含义
public 公共访问控制符,指定该变量是公共的,可以被任何对象的函数访问
private 私有访问控制符,指定该变量只允许自己类的方法访问,其他类中的方法均不能访问此变量
protected 保护访问控制符,指定该变量只可以被它自己的类及其子类或同一包中的其他类访问,在子类中可以覆盖此变量
缺省 缺省访问控制符时,则表示在同一包中的其他类可以访问此成员变量,而其他包中的类不可以访问此成员变量
final 最终修饰符,指定此变量的值不能被修改
static 静态修饰符,指定该变量被所有对象共享,即所有的实例都可以使用该变量
transient 过度修饰符,指定该变量是一个系统保留,暂无特别作用的临时性变量
volatile 易失修饰符,指定该变量可以同时被几个线程控制和修改

注意
在定义类的成员变量时,可以同时赋初值,表明成员变量的初始状态,但对成员变量的操作只能放在方法中

成员方法
用来定义对类的成员变量进行操作的,是实现内部功能的机制,同时也是类与外界进行交互的重要窗口

格式如下

[修饰符] 返回值的数据类型 方法名(参数1, 参数2, ......)
		{
			语句序列;
			return [表达式];
		}

其中修饰符为可选项,参数传递若没有则括号内不写,而若函数没有返回值,其数据类型为void,且return语句省略

成员函数修饰符的含义

修饰符 含义
public 公共访问控制符,指定该函数是公共的,可以被任何对象的函数访问
private 私有访问控制符,指定该方法只允许自己类的方法访问,其他类中的方法均不能访问此方法
protected 保护访问控制符,指定该方法只可以被它自己的类及其子类或同一包中的其他类访问,在子类中可以覆盖此方法
缺省 缺省访问控制符时,则表示在同一包中的其他类可以访问此成员方法,而其他包中的类不可以访问此成员方法
final 最终修饰符,指定此变量的值不能被重载
static 静态修饰符,指定该方法只声明方法头,而没有方法体,抽象方法需在子类中被实现
abstract 抽象修饰符,指定该方法只声明方法头,而没有方法体,抽象方法须在子类中被实现
synchronized 同步修饰符,在多线程程序中,该修饰符用于在运行前,对它所属的方法加锁,以防其它线程访问,运行结束后解锁
native 本地修饰符,指定此方法的方法体是用其他语言在程序外部编写的

注意
类中定义的变量为成员变量
方法中定义的变量为局部变量

其区别

成员变量 局部变量
语法形式 属于类,可以被public private static等修饰符修饰 不能被访问控制符及static修饰
内存中的存储方式 对象的一部分,而对象存在堆内存中 存在与栈内存中
内存中的生存时间 对象的一部分,随对象创建而存在 随方法的调用而产生,方法调用结束则自动消失
初值 若没有赋初值,则自动以类型的默认值赋值 不能自动赋值,必须显式的赋值后才能被使用
对象

一个对象的生命周期为
创建 --> 使用 --> 销毁

创建对象

  1. 声明指向“由类所创建的对象”的变量
  2. 利用new运算符创建新的对象,并指派给前面所创建的变量

比如已经创建了一个类Student,要创建对象stu

Student stu;
stu = new Student();

或
Student stu = new Student();

对象的使用
创建对象之后,对对象的成员进行访问
其格式为

对象名.对象成员

或对成员方法进行引用
对象名.成员方法()

成员变量的一些初始值

成员变量类型 初始值 成员变量类型 初始值
byte 0 double 0.0D
short 0 char ‘\u0000’(表示为空)
int 0 boolean false
long 0L 所有引用类型 null
float 0.0F
在类定义内调用方法

在类的定义内调用本类的其他成员,可在该成员前加上this,则this代表调用该成员的对象
e.g.

double volume()
{
	return this.area() * this.height;
}
参数传递
以变量为参数调用方法

参数实质就是方法的自变量,所以参数要放在方法的括号内来进行传递,括号内的参数可以是数值型,字符串型,甚至是对象

以数组为参数或返回值的方法调用

情形一:指明传入的参数是一个数组即可
e.g.

public void least(int[] array)
{
	...
}

情形二:而如果一个方法没有返回值,则用void修饰,而返回一个一维整型数组,则加上int[],返回二维数组,则加上int[][];

e.g.

int[][] transpose(int[][] array)
{
	...
	return array;
}

transpose用来接收而为整型数组,返回类型也是二维整型数组

发布了78 篇原创文章 · 获赞 181 · 访问量 8680

猜你喜欢

转载自blog.csdn.net/qq_44790423/article/details/101156618