【NOTE】Java关键字Final&&Abstract&&Static特征

Final(3)

1.修饰变量:不能被赋值

2.修饰类:不能被继承

3.修饰方法:不能被覆写

Abstract(2)

1.修饰类:抽象类,这个类没有实例

2.修饰方法:抽象方法,只有声明没有实现,需要子类继承

3.抽象类和普通类的区别是什么?

抽象类无法被实例化

Static(5)

和对象解绑

1.修饰类:和外部类对象解绑,存储在类上,类存放在方法区,类(加载)只被加载一次

*类加载:把类文件(.class)从硬盘加载到内存中

2.修饰变量:可以达到c语言全局变量的作用

3.修饰方法:方法的与运行阶段有区别,表现在调用栈

4.静态代码块:一般用来初始化静态变量,只被执行一次

5.静态导入

【attention】普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身,这个指针就像一根绳子“绑住了”非静态,而static不生成这个this指针,所以static可以做到和对象解绑

表现:

没法使用this关键字

没法直接访问普通属性

没法直接调用普通方法

对象的创建

1.new

2.反射

对象的实例化是做了个什么事情

1.从方法去中找该类的信息

如果没找到?触发类的加载(类的加载器:)

做月饼-找模子模型:

举个例子类似于要做一个月饼,你是不是首先需要找月饼模子,从方法中找该类的信息就是你到处找一个月饼模子,如果你要是自己找不到,就需要有人帮你找,类的加载器就是到处给你找月饼模子的部门

2.对象最终放在堆上

3.计算对象的大小(属性(包括父类))

4.开辟的空间初始化为0X0(属性的默认值都是0)

5.属性的初始化

优先执行前两个(按照书写顺序)

——————————————

1.定义时的初始化 int a=10;

2.构造代码块 {a=10;}

——————————————

最后执行

3.构造方法A(){a=10;}

6.对象的生命周期

1.开辟空间+设置)0x0

2.属性初始化阶段

3.真正生命

4.标记为死去

GC算法:1.怎么判断对象是否死去

2.怎么快速而高效的回收g

发布了104 篇原创文章 · 获赞 165 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43914278/article/details/101238294