static关键词

本文详细解释了Java中static关键字的作用,静态变量和方法的特性,以及静态成员与实例成员在访问、初始化、调用等方面的区别。还介绍了包的概念、访问修饰符和封装机制,包括getter/setter和this关键字的使用。
摘要由CSDN通过智能技术生成


## static 关键字
static修饰的变量和方法都属于类,所有对象共享
### static成员 和 实例成员的区别

静态方法适用于与类本身相关的操作,而成员方法适用于与类的实例相关的操作

- static 成员属于类,实例成员属于对象;
- static 成员在类加载的时候初始化,实例成员在创建对象(new)的时候初始化;
- static 成员通过`类名.属性名` / `类名.方法名()`  也可以通过对象名访问【不推荐】;
- 实例成员通过对象访问 `对象名.属性名` `对象名.方法名()`;
- 实例成员可以访问静态成员和实例成员,静态成员不能访问实例成员;
- 静态成员可以在静态代码块、实例代码块中使用,而实例成员只能在实例代码块中使用;
- 在静态方法中调用示例方法,需要先创建一个对象,然后通过对象调用;实例方法可以直接调用静态方法;
- static 成员中不能使用this关键字,实例成员中可以使用this关键字。

## 代码块
1. 实例代码块
```java 
{
}
```
2. 静态代码块
```java
static{
}
```
3. 创建对象的执行顺序
- 加载类模板,初始化static成员
- 按照顺序执行static代码块,赋值语句等等
- 初始化实例成员
- 按照顺序执行实例代码块,赋值语句等等
- 执行构造方法(创建对象的时候调用的是哪个构造就执行哪个构造)

## 包
其实就是一个文件夹,为了避免存在重名的类,在不同的包下可以存在同名的类。包名一般都是域名倒置。
- 在当前类中声明所在的包。
```java
package com.kfm;
```
- 导包:要访问其他包的类的时候。
- 如果访问不同包的类,需要导包或使用全限定名。
```java
// 类的全限定名 包名 + 类名 com.kfm.Test
import com.kfm.Test;
```
- 同包/`java.lang`包不需要导包

## 访问修饰符
3个(4种):public 、 protected 、 package-access 、 private;

#### 修饰类的只有 `public` 和 `package-access`
public修饰的类,任何地方都可以访问。
package-access 修饰的类,只能在同包下访问。


#### 修饰类的成员
- public: 公共的,任何地方都可以访问
- protected: 受保护的,同类、同包所有类可以访问。
- package-access: 缺省访问修饰符,同类、同包所有类可以访问。
- private: 私有的,只能同类访问。

## 封装
合理隐藏、合理暴露
- 隐藏了类的成员变量,将成员变量的访问修饰符修改成 `private`, 非同类就不能访问。
- 为了让外界访问,提供了`getter`/`setter`方法。
  - getter: get + 属性名 (属性名首字母大写),返回值类型与属性的类型一致,方法体中返回了这个属性值
  - setter: set + 属性名 (属性名首字母大写),有一个参数,参数类型和属性类型一致,方法体中把参数的值赋值给属性
- 然后就可以通过 `getter` / `setter` 方法去访问对象的属性以及对属性进行赋值
- 可以在`setter`方法中对属性值的合法性做一些限制。

this的用法
调用成员变量,处理成员变量和局部变量同名的问题

 public class Person{

public String name;

public void setName(String name){

this.name=name;//调用成员变量

}

public class Person{

public String name;

public void setName(String str){

name=str;

}

}

}

调用当前对象的成员方法

public void eat(){}

public void work(){

this.eat();//调用成员方法

}

调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句

public Person(String name){

this.name=name;

}

public Person(String name,int age){

this(name);//调用重载构造方法

this.age=age;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值