Java程序基础——final关键字&static关键字

目录

1、final的概念

2、final的特点

2.1、final修饰类

2.2、final修饰方法

2.3、final修饰变量

 2.4、final修饰成员变量

3、static的概念

4、static的特点

4.1、static修饰的成员变量

4.2、static修饰的成员

 5、static的注意事项

6、定义静态常量


1、final的概念

  • 当一个类被描述完之后不想被继承,或者某些类的部分方法是固定的,不想被子类重写,要解决这些问题,需要使用一个关键字final
  • final的意思为最终,不可变
  • final是一个修饰符,它可以用来修饰类、类的成员、以及局部变量

2、final的特点

2.1、final修饰类

final修饰的类不可以被继承,但是它可以继承其他类

class A {}
final class B extends A {}
class C extends B {}   // 这里B类是不可以被继承的

2.2、final修饰方法

final修饰的方法不可以被重写,但是父类中没有final修饰的方法,子类重写后可以追加final关键字

class A {
  public final void method01() {}
  public void method02() {}
}

class B extends A {
  method01()    // 不可以被重写
   public final void method02() {}
}

2.3、final修饰变量

final修饰的变量称为常量,这些变量只能被赋值一次

final int i = 123;
i = 1;      // 赋值报错

final修饰的变量为引用类型,引用类型的变量值为对象地址,地址值不能更改,但是地址内的对象属性值可以修改

final Person p1 = new Person();
Person p2 = new Person();
p1 = p2;    // final修饰的变量p1所记录的地址不能改变
p1.name = "小镭"   // final修饰的变量p1的属性可以改变

 2.4、final修饰成员变量

final修饰成员变量,需要在创建对象前赋值,否则报错(当没有显示赋值时,多个构造方法均需要为其赋值)

class Demo {
  final int m = 123;
  final int n;   
  
  public Demo(int n){
      // 可以在创建对象所调用的构造方法中,为n赋值
      n = 1;
   }
  public Demo(){
      n = 1;
   }
}

3、static的概念

  • 当在调用某个方法时,这个方法没有访问到对象的特有数据,这是去创建这个类的对象就显得有些多余,但不创建对象,方法就调用不了。要解决这个问题,就可以使用static关键字
  • static是静态修饰符,一般用来修饰类中的成员

4、static的特点

4.1、static修饰的成员变量

被static修饰的成员变量属于类,但不属于这个类的某个对象

class Demo {
   public static int num = 123;
}

class Test {
   public static void main(String[] args){
    Demo d1 = new Demo();
    Demo d2 = new Demo();
    d1.num = 1;
    System.out.println(d1.num);    // 结果为1
    System.out.println(d2.num);    // 结果也为1
}
}

4.2、static修饰的成员

被static修饰的成员可以通过类名直接访问

访问静态成员的格式:
  类名.静态成员变量;
  类名.静态成员方法(参数);
  对象名.静态成员变量;    -- 不建议使用
  对象名.静态成员方法(参数);   -- 不建议使用
class Demo {
   public static int num = 123;
   public static void method(){
      System.out.println("静态方法"); 
}
}

class Test {
   public static void main(String[] args){
    System.out.println(Demo.num);    
    Demo.method();
}
}

 5、static的注意事项

  • 静态内容是优先于对象存在的,只能访问静态,不能使用this或super。静态static修饰的内容存于静态区。
class Demo {
   public int num = 123;
   public static void method(){
      System.out.println(this.num);    // 不能使用this或super 
  }
}

  • 同一类中,静态成员只能访问静态成员 
class Demo {
   public int num = 123;
   public static int n = 1;
   public static void method(){
      System.out.println(m);    // 静态方法中,只能访问静态成员变量或者静态成员方法,要报错 
      System.out.println(n);    
  }
}
  • main方法为静态方法,仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中 

6、定义静态常量

  • 定影静态常量,使用public static final 修饰的变量来完成。变量名全部大写,多个单词使用下划线连接
  • 定义格式
public static final 数据类型 变量名 = 值;

public static final String COMPANY_NAME = "XIAOLEI";

注意:

  • 接口中的每个成员变量都默认使用public static final 修饰
  • 所有的接口中定义成员变量都是静态常量,由于接口没有构造方法,所以必须是显示赋值,可以直接使用接口名访问。
interface Inter {
   public static final int COUNT = 123;
}
访问:
Inter.COUNT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值