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修饰的方法、属性和构造函数,是受保护的,可以同一包下或其类的所有子类(即使非同包下的子类)可以访问。
相关推荐
flyair_China19 分钟前
【云架构】
开发语言·php
pengyu20 分钟前
【Java设计原则与模式之系统化精讲:壹】 | 编程世界的道与术(实战指导篇)
java·后端·设计模式
日月星辰Ace23 分钟前
JVM 垃圾回收简介
java
Chef_Chen26 分钟前
从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
开发语言·学习·r语言
掉头发的王富贵26 分钟前
Arthas神器入门:动态调试Java应用,轻松搞定生产环境Bug!
java·后端·debug
zh_xuan26 分钟前
c++ std::pair
开发语言·c++
Java陈序员31 分钟前
再见 Navicat!一款开源的 Web 数据库管理工具!
java·react.js·docker
知其然亦知其所以然1 小时前
RAG 结果太水?用 RRF + Reranker 重排,效果翻倍提升!
java·后端·llm
CodeWithMe1 小时前
【C/C++】EBO空基类优化介绍
开发语言·c++
SimonKing1 小时前
吊打面试官系列:Spring为什么不推荐使用字段依赖注入?
java·后端·架构