static、final和abstract、接口的详细解说

本文详细解析了Java中static和final的关键特性与应用场景,包括静态属性、方法、代码块及final在不同上下文中的限制与用途。同时介绍了类加载机制、抽象类与接口的基本概念及其区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1. static:
(1) 属性:静态属性-->类被加载时调用。
          没用static来修饰的是"实例属性":描述对象的特征,先创建对象才有它.
      什么时候定义成静态属性或者实例属性?
    答:例如动物园的鸟、猴子,它们的特征用实例属性,
        而动物园的count数量 则用静态属性。
(2) 方法:静态方法中不能访问非静态的属性或者方法。
          但是非静态方法可以访问静态的属性。
(3) 代码块:定义类中。
    作用:做一些类的准备工作,在类被加载时调用,而且只被加载一次,
          所以用来测试类是否被加载。

(4) 静态方法不可被覆盖,如果子类和父类有重名的静态方法,虽然编译通过,但并不能实现多态,所以不能
    叫"覆盖"。例如:Animal a = new Bird(); a.move();如果是"多态"的话应该输出的结果为,子类中的结果,
      但是实际不是,它是调用的是父类中的方法。所以不能叫"覆盖(多态)"。
2. final:(在方法里面定义的变量必须是final类型的,否则就会编译不通过)
(1) 局部变量:基本数据类型值不被改变;如为引用类型则指向的地址不被改变。
              final可以修改变量:包括"局部变量(在方法内部的变量叫局部变量)",和"实例变量"也叫"类变量"是在类中定义的,即是"成员变量"就叫"类变量"或"实例变量".这里的"实例变量"包括"全局变量和静态变量"。
(2) 属性:常量。有2中赋值方式:
                一、直接赋值。
                二、通过构造函数赋值。
           但是如果和static一起使用的话:就必须直接赋值。
(3) 方法:这个方法不能被覆盖。
(4) 类:这个类不能被继承。且类中的方法默认都是fianl的。

 

3. 静态代码块和main函数执行顺序的详解:
   (1) 情况一:在主函数中有个main函数和静态代码块。
       顺序如下:先执行静态代码块--->在执行main函数的入口--->再执行构造函数--->main函数结束。
   (2) 情况二:在主函数中只有个main函数没有静态代码块。
       顺序如下:先执行main函数的入口--->父类的静态代码块--->子类的静态代码块--->父类的构造函数--->子类的构造函数--->子类的方法--->main函数结束。

 

4. 类加载时机:
  (1) 生成类对象的时候一定会加载.
  (2) 没有生成类的对象,但是访问了类的静态成员(包括方法或属性)时候也加载.
   (3) 定义类的引用的时候,不加载!(只是定义空的引用而已).
   (4) 创建子类时,先加载父类(首先要生成父类的对象).
5. 注意!
   通过子类名去调用父类中的静态方法时,只加载父类而不加载子类。

 

6.abstract的解说:
(1) 可不可以定义一个引用呢?
    可以的。即AbstractTest t = new 子类(); 作用是为了用"多态".
(2) 但是不能用new来实例化。
(3) 能不能有构造方法呢?
    可以的。这里的构造方法的作用只是让子类的对象能够编译通过,但不是用来new的(即实例化父类对象的)。
(4) 可以用子类来实现父类中的所有方法。

 

7. 接口的解说:
(1) 一个类可以实现多个接口,实现这个接口的类中的方法应当为public的(不能省略的)。
(2) 接口中的变量默认为:public static final (这个可以省略的)。
    接口中的方法默认为:public abstract (这个可以省略的)。
(3) java中的类是单继承,而接口可以多继承。
(4) 接口中不能有构造方法,即不能用new()。
(5) 接口和接口之间只有继承(可以多继承)。
    类与类直接也只有继承关系(单继承)。
    类可以实现多个接口。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值