Java面向对象:static,abstract,final

static关键字

静态修饰符:可以修饰类,成员变量,成员方法和静态代码块,不可以修饰局部变量.。

可以不创建对象,类名.属性名调用。

特点

随着类的加载而加载,优先于对象存在,被类的所有对象共享。

可以通过对象调用,也可以通过类名调用,调用的都是同一个内存地址的变量。

注意

在静态方法中是没有this,super关键字。(静态是随着类的加载而加载,this是随着对象的创建而存在,静态比对象先存在。)

静态方法只能访问静态的成员变量和静态的成员方法,非静态成员方法不仅可以访问静态成员变量和成员方法,也可以访问非静态的成员变量和成员方法。

静态变量和成员变量区别

所属不同

  • 静态变量属于类,所以也称为类变量。
  • 成员变量属于对象,所以也称为实例变量(对象变量)。

内存中位置不同

  • 静态变量存储于方法区的静态区。
  • 成员变量存储于堆内存。

内存出现时间不同

  • 静态变量随着类的加载而加载,随着类的消失而消失。
  • 成员变量随着对象的创建而存在,随着对象的消失而消失。

调用不同

  • 静态变量可以通过类名调用,也可以通过对象调用。
  • 成员变量只能通过对象名调用。

静态导入

静态导入用于简化程序对类静态属性和方法的调用。

语法:
import static 包名.类名.静态属性|静态方法|*
例如:
import static java.lang.System.out;
out.print("静态导入");

abstract关键字

用abstract修饰的类叫抽象类,用abstract修饰的方法叫抽象方法,声明而未被实现。

abstract不能和final一起用,abstract不能和static一起用,abstract不能和private一起用。

特点

如果一个函数没有方法体,那么该函数必须要使用abstract修饰,把该函数修饰成抽象的函数。抽象方法是不可以有方法体的。

如果一个类出现了抽象的函数,那么该类也必须使用abstract修饰。

如果一个非抽象类继承了抽象类,那么必须要把抽象类的所有抽象方法全部实现,除非这个子类是抽象类。

抽象类即可以存在抽象方法,又可以存在非抽象的方法,还可以不存在抽象方法。(一个类没有抽象方法定义成抽象类,目的是不让创建对象。)

抽象类是不能创建对象,不可以被实例化,可以通过子类进行实例化。

final关键字

最终的:可以修饰类,变量,方法。

修饰类:类不能被继承。

修饰变量:变量就变成常量,只能被赋值一次。(可以是全局变量,也可以是局部变量。)

修饰方法:方法不能被重写。

final修饰变量的初始化时机

被final修饰的变量只能赋值一次,在构造方法完毕前(非静态的常量)。

class Car {
    int number = 1234;
}

public class FinalVariable {

    public static void main(String[] args) {
        final Car mycar = new Car();   //终极变量,引用类型
        mycar.number = 8888;           //可以!修改的是mycar指向的内存中的值
        mycar = new Car();             //错误!不能修改mycar本身的值
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值