java学习笔记之面向对象static,final关键字
一.static关键字
1.概述:
static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中。
2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值)
/* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */
3.static的特点
/* 1.在同一个类中,静态成员只能访问静态成员,非静态成员可以访问静态成员跟非静态成员。原因:静态成员优先加载到内存中,而非静态的成员只有在创建对象时才会加载到内存中。 2.main方法为静态成员方法,仅仅作为程序的执行入口,不属于某个类,可以定义到任意类中。 */
4.静态代码块:
代码块:指被{}包裹起来的代码区域
/* 1.局部代码块: 定义在局部位置的(方法内)的代码块,主要作用是改变变量的作用域; 2.构造代码块: 定义在成员位置(类中方法外)的代码块,构造代码块属于每一个对象,每创建一次对象,就会执行一次。优先于构造方法执行; 作用:《1》给成员变量赋值《2》将构造方法中的共性代码抽取出来,提高代码的复用性 3.静态代码块: 定义在成员位置的(类中方法外)的代码块,被static修饰。静态代码块属于类,不属于对象,终身只执行一次,最先执行(静态优先于非静态,优先于对象);作用:《1》给静态变量赋值《2》应用于项目的初始化 */
5.static多态调用中,编译跟运行;
编译:看父类,父类有编译成功,父类没有编译失败;
运行:
成员变量:都看父类
成员方法:非静态运行子类重写
静态运行父类的静态方法(和子类没有关系,多态表现的是父类的形态);
原因:静态方法属于类,不属于对象,静态方法更没有重写这一说
对象的多态性,静态和对象无关,父类的引用.静态方法,调用的是父类的静态方法
二.final关键字
1.理解:
final最终的,不能更改的;
2.final特点:
/* 1. final修饰类时:被final修饰的类不能被继承,其他不变,可以继承其他类,也叫太监类; 2. 修饰成员方法时:该成员方法是一个最终方法,不能被子类重写,可以被继承使用; 3. 修饰变量时:被修饰的变量是一个常量,其中值不能发生改变,一次赋值终生不变,局部变量只有final一个修饰符; 4. 修饰成员变量时:是一个常量,其值只能赋值一次,必须在创建对象之前赋值,被修饰的成员变量必须显示赋值:《1》定义的时候显示赋值《2》使用构造代码块《3》使用构造方法 */
三.四种权限修饰符
1.private:私有的,仅同类访问
2.默认:就是不写修饰符,相同包下访问
3.protected:受保护的;相同包或者不同包下的子类访问
4.public:公共的;同一个项目下