zoukankan      html  css  js  c++  java
  • java学习笔记之面向对象static,final关键字

    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:公共的;同一个项目下

    四.内部类

    1.内部类概念:

      定义在类内部的类 

    2.内部类的分类:

      (1)局部内部类:定义在其他类方法中的类;

      (2)成员内部类:定义在成员位置的类;

    3.成员内部类的使用:

      (1).定义格式

        修饰符 class  外部类名{

          修饰符  class 内部类名{

            成员变量;

            成员方法

          }

        }

    1 //定义外部类Person
    2 public  class Person {
    3     //定义一个成员内部类Hert
    4    public class Hert{
    5         
    6     }
    7 
    8 }    

      (2)成员内部类的使用格式

        外部类名.内部类名   变量名  = new 外部类名().new 内部类名();

        变量名.成员变量

        变量名.成员方法

      (3)成员内部类和外部类成员变量同名访问问题:

    4.局部内部类的使用

      (1).格式:

        修饰符  class  外部类名{

          修饰符 返回值  方法名(){

            (final) class 内部类名{

               成员变量

               成员方法;

            }

            //使用

            内部类名  变量名  = new 内部类名();

            变量名.成员变量;

            变量名.成员方法;

          }

        }

      (2)局部内部类的使用方式:

         局部内部类和局部变量一样,作用域在方法中,方法弹栈就失效了,所以定义完了局部内部类需要在方法中使用;

    五.匿名内部类

    1.概念:没有名字的局部内部类

    2.作用:简化代码,把创建子类/实现类,重写方法,创建子类/实现类对象合成一步;

    3.格式:

      

    1 new 父类/接口(){
    2   重写父类或者接口的方法  
    3 };

      

  • 相关阅读:
    hive高阶函数和采样-优化
    zookeeper搭建
    hive常用函数和建表
    hive常用函数-建表-jdbc
    hadoop远程调试和配置HA
    hadoop-MR-排序
    python spark
    jenkins安装
    beetlsql
    spark页面单跳转化率
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8076465.html
Copyright © 2011-2022 走看看