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修饰的方法、属性和构造函数,是受保护的,可以同一包下或其类的所有子类(即使非同包下的子类)可以访问。
相关推荐
异常君几秒前
Redis 中的概率过滤器:布隆过滤器与布谷鸟过滤器实战对比
java·redis·后端
胡子发芽1 分钟前
请解释Java中的逃逸分析(Escape Analysis)及其对性能的影响,并说明如何通过JVM参数来控制逃逸分析的行为
java
Stimd3 分钟前
【重写SpringFramework】声明式事务上:构建事务切面(chapter 4-5)
java·后端·spring
码熔burning3 分钟前
【MQ篇】RabbitMQ之消息持久化!
java·分布式·rabbitmq·mq
南客先生6 分钟前
深入解析:RocketMQ、RabbitMQ和Kafka的区别与使用场景
java·kafka·消息队列·rabbitmq·rocketmq
caihuayuan49 分钟前
【docker&redis】用docker容器运行单机redis
java·大数据·sql·spring·课程设计
我是苏苏11 分钟前
消息中间件RabbitMQ02:账号的注册、点对点推送信息
开发语言·后端·ruby
写bug写bug29 分钟前
Java并发编程:优雅的关闭钩子(Shutdown Hook)
java·后端
工藤新一¹29 分钟前
C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 14)
开发语言·c++·游戏引擎·游戏开发·sdl·实践项目
钢铁男儿37 分钟前
C#核心技术解析:静态类型、dynamic与可空类型
开发语言·c#