java基础语法-三大修饰符

一、static 静态的 可以修饰属性 方法

a)static修饰属性 称之为静态属性、类变量。
成员变量:每个对象都持有一份,不会因为一个对象的改变影响另一个对象值的改变。成员变量需要以引用进行访问,也就需要在类外创建对象进而访问的。
static定义的位置是类中,方法的外面,与成员变量对齐。
static修饰的属性是全类共享,所有的对象共享一份,一个对象的值的改变会影响另一个对象的值的改变。
访问方式:类名.属性名

b)static可以修饰方法 此方法为静态方法
i.静态方法访问
类的外部:类名.方法名();
类的内部:方法名();

ii.静态方法只能直接访问静态成员,不能直接访问非静态成员(静态成员包括静态方法和静态属性)。
原因:在访问静态方法时,可能还不存在对象,所以会指代不明确。
静态方法中不能出现this. super.的方式。
静态方法仍然能被继承,静态方法只能被静态方法覆盖但没有多态

问题:为什么 在定义函数的时候加上static。
主函数为static修饰的,静态方法只能直接访问静态成员,所以要求函数必须是static。
class A{
main(){
java.lang.System.arraycopy();
java.util.Arrays.sort() ;
}
}

c)动态代码块
i.定义位置类中,方法的外面
ii.执行的地位:会按照和成员变量的位置的先后执行,在构造方法之前执行,每次创建对象都会触发动态代码块的执行。
iii.作用: 可以为成员变量赋值,在创建对象的时候会触发动态代码块的执行。

d)静态代码块

i.static修饰的代码块称之为静态代码块。
ii.执行地位:在类加载的时候触发静态代码块的执行,静态代码块和静态属性初始化的执行根据先后顺序。

1.类加载:当程序第一次用到某一个类的时候会通过CLASSPATH找到.class文件,然后将类的所有信息(类名 包结构 父类 属性 方法 构造方法……)加载到JVM中,类加载只会进行一次。
2.类加载的时机
a)第一次创建对象的时候会触发类加载
b)子类类加载会触发父类的类加载
c)第一次访问静态成员的时候会触发类加载
d)Class.forName(“全限定名”);
注意:只是声明引用不会触发类加载的进行。

e)没有继承关系的对象第一次创建的过程
静态属性
静态代码块 类加载只会进行一次 所以只执行一次
成员变量
动态代码块
构造方法中的代码
….
成员变量
动态代码块
构造方法中的代码
注意:静态方法调用才会执行

f)具有继承关系的对象第一次创建过程
父类静态属性
父类静态代码块
子类静态属性
子类静态代码块 父类的类加载和子类的类加载只会进行一次
父类成员变量
父类动态代码块
父类构造方法中的代码
子类成员变量
子类动态代码块
子类中的构造方法中的代码
……
父类成员变量
父类动态代码块
父类构造方法中的代码
子类成员变量
子类动态代码块
子类中的构造方法中的代码

二、abstract 抽象的
似是而非的 像却不是的,具备某种对象的特征,但是好像不完整。

a)abstract可以修饰类 此类为抽象类 就不能new对象

i.抽象类的作用
1.抽象类仍然可以被继承,仍然可以为子类提供共性的属性和方法。
父类共性+子类独有=完整的子类对象。
在这里插入图片描述
2.可以声明为引用,强制使用多态。
一般用来修饰父类(不够完整的,不够具体的类 如Person Animal)

ii.abstract可以修饰方法,此方法为抽象方法;只有方法的声明而没有方法的实现。

1.抽象方法必须包含在抽象类中,抽象类中可以存在普通的方法。
2.一个类继承了抽象类,那么必须实现抽象类中所有的抽象方法,否则这个类还是一个抽象类。

三、final 最终的 最后的
a)类
final修饰的类不能被继承
常见final修饰的类:String|Math|System
b)方法
final修饰的方法可以被继承,但是不能被覆盖
c)变量
final修饰的变量为常量,值不能改变。 常量。
i.局部常量:只能赋值一次,值不能改变。
ii.实例常量:
注意:实例常量不存在默认值。
赋值机会:必须在创建对象完毕之前赋值
1.显示初始化
2.动态代码块
3.构造方法中赋值(必须保证每一个构造方法都能为实例常量赋值)

在这里插入图片描述

iii.静态常量:不存在默认值 只能赋值一次
赋值机会:两次 ,在类加载之前必须赋值。
1.显示初始化
2.静态代码块

在这里插入图片描述

iv.对象类型
fnal修饰的基本数据类型值不可以改变
final修饰的引用数据类型 地址不可改变

v.private | abstract | static | final

private abstract不能联合使用
private修饰的方法不能被继承
abstract修饰的方法必须要被子类继承,而且需要进行覆盖
static abstract不能联合使用
static修饰的方法需要方法的实现,但是abstract没有实现
final abstract不能联合使用
final修饰的方法不能被覆盖 abstract要求必须要覆盖
final private static 可以联合使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值