面向对象

  封装

        类: 模板

        对象: 实例

        引用,遥控器

        构造方法

               新建对象时执行

               构造方法重载

         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(受保护的)

对象的创建过程

内存

    方法区:  类, 静态变量

    堆: 对象, 

    栈: 变量, 

              

java - day008 -final ,static ,访问控制符.的更多相关文章

  1. java 关键字final static native详解

    java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...

  2. Java中 final static super this instanceof 关键字用法

    一.final关键字 final可以修饰变量.方法及类: 1.当定义一个final变量时,jvm会将其分配到常量池中,其所修饰的对象只能赋值一次,对基本类型来说是其值不可变,引用类型(包括作为函数形参 ...

  3. java基本数据类型,访问控制符,运算符执行顺序

    1.java数据类型 内置数据类型:boolean(1),  byte(8), char(16), short(8), int(32), long(64), float(32), double(64) ...

  4. java面向对象--包及访问控制符

    多人开发同一个项目时,会出现类名称相同的情况.package就是为了避免类或接口名称重复而采用的一种措施.实际上包就是有一定层次结构的文件夹,*.class文件要保存当前类声明的和包对应的文件夹中. ...

  5. JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac

    记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...

  6. Java关键字final、static使用总结(转)

    原文链接:Java关键字final, static一些要点 1. final   final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法复盖,但可以被 ...

  7. java入门---修饰符&访问修饰符&非访问修饰符

        Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符     修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...

  8. Java final类&所有构造方法均为private的类(类型说明符&访问控制符)

    1. final是类型说明符,表示关闭继承,即final类不能有子类: 但final类可能可以在类外创建对象(即final类的构造方法可以不是private型): 在同一包中时,可以在任何另外一个类中 ...

  9. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

随机推荐

  1. windows常用快捷键和指令

    快捷键: Ctrl+鼠标滚轮:更改图标大小(桌面).缩放(开始屏幕) Ctrl+A:选择所有 Ctrl+C:复制 Ctrl+E:选择搜索框(资源管理器) Ctrl+N:新窗口(资源管理器) Ctrl+ ...

  2. mysql-笔记-函数

    如果不指定:sql-mode=ignore_space ,函数名与后面的括号之前不能有空格

  3. 归并排序-JAVA实现

    package com.iloveu.xxx; public class MergeSort { static final int SIZE = 15; static void mergeOne(in ...

  4. linux shell通配符及if语句判断

    $# 是传给脚本的参数个数 $0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚 ...

  5. ubuntu 安装 evpp

    ubuntu 安装 evpp 来源 https://www.cnblogs.com/wisdomyzw/p/9402440.html Ubuntu虚拟机安装开源库evpp说明: EVPP为奇虎360基 ...

  6. Mybatis技术原理理——整体流程理解

    前言:2018年,是最杂乱的一年!所以你看我的博客,是不是很空! 网上有很多关于Mybatis原理介绍的博文,这里介绍两篇我个人很推荐的博文 Mybatis3.4.x技术内幕和 MyBaits源码分析 ...

  7. HDU4899 Hero meet devil DP套DP

    陈老师的题QwQ 原题链接 题目大意 有两个字符串\(S\)和\(T\)(都只能由'A','C','G','T'这四个字符组成),\(S\)已知\(T\)未知,还知道\(S\)的长度为\(m\).求满 ...

  8. 2019 年 3 月 iOS程序员面试心得总结,请大家多多指教!

    序言: 今年2月中下旬因为个人原因,换了一份工作,3月初期间面试了有3,4家,基本都是D轮或者刚刚上市的公司,也有上榜的BAT,也从他们的面试笔试中看到了自己的一些不足,于是就想写出来和大家分享一下, ...

  9. pthread 线程立即取消的两种方法

    1.相关函数介绍 a. int pthread_cancel(pthread_t thread) 1发送终止信号给thread线程,如果成功则返回0,否则为非0值.发送成功并不意味着thread会终止 ...

  10. 前端面试题整理—Node篇

    1.node有哪些特征,与其他服务器端对比 特征:单线程.事件驱动.非阻塞I/O node 无法直接渲染静态页面,提供静态服务 node 没有根目录的概念 node 必须通过路由程序指定文件才能渲染文 ...