Java基础——类Class(成员变量和成员方法)

文章目录

类(Class)的构成:

  • 属性:对应类中的成员变量。
  • 行为:对应类中的成员方法。

声明格式:

java 复制代码
[访问权限修饰符] Class 类名 {

}

说明:

  • 访问权限修饰符(可选):private、public、default(缺省)、protected等。

示例:

java 复制代码
Class Demo {
	//成员变量
	int size = 3;
	//成员方法
	public static void test() {
		//方法体
		//局部变量
		int price = 5;
	}
}

没有访问权限修饰符,默认是default,可以省略不写。

成员变量

在方法外,类内声明的变量称为成员变量。

声明格式:

java 复制代码
[访问权限修饰符] [其他修饰符] 变量类型 变量名;

说明:

  • 访问权限修饰符(可选):private、public、default(默认)、protected等。
  • 其他修饰符(可选):static、final等。
  • 变量类型:基本类型和引用类型。
  • 变量名:见名知意(命名规范参考)。

成员变量:有默认值,可以不需要初始化值。

static修饰:

  • 实例变量:不以static修饰。
  • 类变量:以static修饰。

注意:是否static修饰的区别在于加载进内存的顺序不一样,后面会单独说,暂时了解一下。

成员变量和局部变量的区别:

区别 成员变量 局部变量
声明位置 直接声明在类中 方法形参或内部、代码块内、构造器内等
修饰符 private、public、缺省(default)、protected、static、final等 不能用权限修饰符,可以用final修饰
初始化值 有默认初始化值 没有默认初始化值,必须显示赋值
内存加载位置 堆空间或静态域内 栈空间

示例:

java 复制代码
public final int maxSize = 10; //常量maxSize

成员方法

方法是类或对象行为特征的抽象,用来完成某个功能操作,在某些语音中也称为函数或过程。

声明格式:

java 复制代码
[访问权限修饰符] [其他修饰符] 返回值类型 方法名(形参列表) {
	//方法体;
}

说明:

  • 访问权限修饰符(可选):private、public、default(默认)、protected等。
  • 其他修饰符(可选):static、final等。
  • 返回值类型:void、基本类型和引用类型(非void返回值必须要return返回值)。
  • 方法名:见名知意(命名规范参考)。
  • 形成列表(可选):可有可无,若有调用时必须传入相应类型的形参。

将功能封装为方法的目的是可以实现代码的重用,简化代码。

注意:

  • Java中方法不能独立存在,所有的方法必须定义在类(接口)里,方法中不可以定义方法。
  • 方法被调用一次,就会执行一次,没有具体返回值的情况,返回值类型用关键字void表示,那么方法中可以不必须return语句,如果使用,仅用来结束方法。
  • 方法的使用中,可以调用当前类的属性或方法(方法A中又调用了方法A,这种被称为递归调用)

示例:

java 复制代码
//公共静态无返回值且无参数的test方法
public static void test() {
	//方法体
}

return关键字

使用范围:方法体中。

作用:结束方法或返回指定类型的返回值。

注意:return关键字后面不可以有其他执行语句(因为方法结束,return后面的语句永远不会执行)。

示例:

java 复制代码
//当形参数值大于10时,结束方法
public void test(int param) {
	if(param > 10) {
		return;
	}
	System.out.println("DemoTest.test");
}

可变长参数

JavaSE 5.0中提供了Varargs(variable number of arguments)机制,允许直接定义能和多个实参相匹配的形参。

声明格式:

java 复制代码
[访问权限修饰符] [其他修饰符] 返回值类型 方法名(形参列表,参数类型... 参数名) {
	//方法体;
}

说明:

  • 可变长参数方法参数的个数可以是多个和0个。
  • 方法中的参数有可变参数,需要放在形参声明的最后(否则编译失败)。
  • 同一方法中,形参最多只能声明一个可变长参数。
  • 可变长参数方法和同名方法之间彼此构成重载。

JDK5.0前后比较:

java 复制代码
//JDK5.0 以前采用数组形参来定义方法,插入多个同一类型的变量
public static void test(int a, String[] books);
//JDK5.0 采用可变个数形参来定义方法,传入多个同一类型变量
public static void test(int a, String... books);

访问权限修饰符

修饰符 本类 同包 子类 所有包
default Y Y N N
public Y Y Y Y
private Y N N N
protected Y Y Y N

说明:

  • default:没有显示使用任何访问修饰符时,默认是default修饰(隐式),所有类、方法和属性都只能在同一包下的类可见。
  • public:被public修饰的类、方法和属性,所有包中的类都可以访问。
  • private:被private修饰的方法、属性和构造函数,只能同一类下访问(封装概念)。
  • protected:被protected修饰的方法、属性和构造函数,是受保护的,可以同一包下或其类的所有子类(即使非同包下的子类)可以访问。
相关推荐
w_31234541 分钟前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安4 分钟前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA7 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_192849990614 分钟前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
张国荣家的弟弟32 分钟前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S43 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
c++------------------函数
开发语言·c++
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法
程序员_三木1 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊1 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴