java - day008 -final ,static ,访问控制符.

时间:2023-03-09 03:04:01
java - day008 -final ,static ,访问控制符.

面向对象

  封装

        类: 模板

        对象: 实例

        引用,遥控器

        构造方法

               新建对象时执行

               构造方法重载

         this 

               this.xxx

               this(...)

         重载

               同名不同参

  继承

          代码复用

          子类对象

               继承之后是有父类对象和子类对象绑定在一起作为一个对象

               创建的时候先创建父类对象,再创建子类对象

               调用成员时, 先找子类,再找父类

           父类构造方法

                先创建父类对象,先执行父类的构造方法

                默认执行无参构造方法 super();

               不存在无参构造,必须手动调用父类有参构造

  多态

            一致的类型

            所有子类对象,都可以被当做一致的父类型处理

            向上转型

            向下转型

  运行期类型识别  instanceof

           对真实类型及其父类型判断,

抽象类

       抽象方法作用; 为子类提供通用的方法定义

       子类必须实现父类的抽象方法

       抽象类不能创建对象

final

      修饰: 常量 标识值不可变

             final int a  = 5;

             final Point a = new Point(3,4);

             a.x = 30; //对的

             a = new Point(5,6); // 错的

             a = null;   // 错的

            a 的属性可以变, 但 a 不能重新赋值

      修饰: 方法,标识方法不能被子类重写

      修饰: 类, 标识类不能被继承

              system

              String

static: 静态

         静态属于类,不属于对象,

         一个类, 被虚拟机加载到方法区

         静态变量.保存在方法区'类'的内存空间中

         调用静态成员时,用类名调动

               System.out

               Integer.MAX_VALUE

               Math.random()

         使用静态变量的原则

               能不用就不用

               静态是非'面向对象的'语法

               子类能调用父类的静态变量,但不是继承,也不能重写

          使用场景

               共享的数据

               工具的方法

                   Math.random()

                   String.ValueOf()

                   Intefer.parseint()

           静态代码块中, 可以直接调用静态成员, 不能直接调用非静态成员

           必须新建实例对象, 用实例来调用

           静态初始化块

                class A{

                      static{

                           静态初始化块, 在类被加载时,只执行一次

                       }

                }

访问控制符

      限制一个类, 或类中的成员的访问范围

     类, 包, 子类, 任意

      public       任何位置都可以访问

      protected  只能在同包下访问,可以被子类继承

      [default]     只能在同包下任意访问

      private       只能在同类中访问

     访问原则, 尽量小范围访问

     public 不能随便修改,会影响其他引用public 的方法

     缩小访问范围, 更便于代码的维护和修改,

   成员变量一般都设为私有,其默认是 default 同包下访问

   可以使用公开的方法来控制变量的赋值及访问

   如果类中的成员变量非常多, 为了同包下调用方便,

   可以选择 [defaule]

   如果希望子类继承这个变量, 可以选择protected(受保护的)

对象的创建过程

内存

    方法区:  类, 静态变量

    堆: 对象, 

    栈: 变量,