Java修饰符

一、static

可以修饰成员变量、成员方法、代码块
. 用static修饰的成员变量表示静态变量,可以直接通过类名来访问;
. 用static修饰的成员方法表示静态方法,可以直接通过类名来访问;
. 用static修饰的程序代码表示静态代码块,当Java虚似机进行加载类时,就会执行该代码块;

static变量 – 只初始化一次,来看个例子

public class Counter {
    public int count1 = 0;
    public static int count2 = 0;

    public static void main(String[] args) {
        Counter counterA = new Counter();
        Counter counterB = new Counter();
        
        System.out.println(++countA.count1);
        System.out.println(++countB.count1);
        System.out.println(++countA.count2);
        System.out.println(++countB.count2);
    }
}
结果
1
1
1
2

二、final

可以修饰非抽象类、非抽象成员方法和变量
. 用final修饰的类不能被继承,没有子类;
. 用final修饰的方法不能被子类的方法覆盖;
. 用final修饰的变量表示常量,只能被赋一次值;

看到它可以修饰非抽象类,我就在想,为啥不能修饰抽象类?原因是抽象类是用来干嘛的?继承的啊,但是被final修饰的类是不能被继承的,所以如果修饰了抽象类,这个抽象类就没有存在的价值了(抽象方法同理)。

感觉final也就没啥了,说说上次我写的一个笔试题吧:
final、finally、finalize是干嘛的?
首先,他们三个虽然长得相近,但半毛钱关系没有
final:如上
finally:是try-catch-finally代码块的最后的代码块,无论如何,都会执行finally代码块里的内容
finalize:是垃圾回收器回收对象的之前,对象调用的方法

三、abstract

可以修饰类和成员方法

  • 用abstract修饰的类表示抽象类,抽象类不能实例化(可以有构造方法),即不允许创建抽象类本身的实例。没有用abstract修饰的类称为具体类,具体类可以被实例化。
  • 用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。没有abstract修饰的方法称为具体方法,具体方法具有方法体。
  • 含有抽象方法的类必须是抽象类,抽象类可以没有抽象方法

都说到这了,索性再来说说抽象类和接口
抽象类

  1. 抽象类的属性和方法默认都是public的
  2. 抽象类里面可以有构造函数,但不是用来实例化的
  3. 抽象类里面可以没有抽象方法

接口

  1. 接口中的属性默认是public static final的
  2. 接口中的方法默认是public abstract的
  3. jdk1.8开始,接口中可以有default方法,该方法有方法体
  4. 接口中可以有static方法,static方法有方法体
  5. 接口中不能有构造方法,不能被实例化
  6. 接口可以继承或实现多个接口

四、访问修饰符

被访问修饰符修饰的属性和方法,可以被哪些类访问?看张图
在这里插入图片描述
y:表示可以被访问

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值