美文网首页
2.Java一切都是对象

2.Java一切都是对象

作者: 云木杉 | 来源:发表于2018-07-05 18:33 被阅读0次

    面向对象

    所有编程思想都提供抽象机制。(抽象的类型与质量)

    • 程序是对象的集合,它们通过发消息来告知彼此所要做的
    • 每个对象都拥有其类型
    • 某一特定类型的所有对象都可以接收同样的消息

    用引用操作对象

    • 一切视为对象,但操作的表示符实际上是对象的一个“引用(reference)”
      遥控 -->引用 电视机 -->对象

    必须由你创建所有对象

    存储

    • 寄存器 位于处理器内部(不同于其他存储区的地方)处理最快,但寄存器的数量极其有限。
    • 堆栈 位于通用RAM(随机访问存储器),用于储存对象的引用,堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。
    • 堆 一种通用的内存池 也位于RAM 用于储存所有的Java对象,当需要一个对象,只需new写一行简单的代码,当执行此代码时,会自动在堆里进行存储分配。
    • 常量存储 常量值通常直接存放在程序代码内部
    • 非RAM存储

    永远不需要销毁对象

    • Java对象不具备和基本类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。{ String s = new String() },引用s在作用域终点就消失了,然而,s指向的String对象仍占据内存空间。
    • 基本类型即使没有初始化,Java也确保它获得一个默认值(局部变量不适用)。
    • 方法名和参数列表(合起来被称为“方法签名”)唯一地标识出某个方法。
    • 创建新的数据类型:类

    对象 is - a

    • 子类是一个父类(Dog is a Animal)
    public Animal {}
    public Dog extends Animal {}
    

    对象 has - a

    • 现有类中拥有另一个类的引用
    public Kill{
      public void killer(){}
    }
    public Pig{
        private Kill mkill;
        public  void operation(){
            mKill = new Kill();
            mKill.killer();
        }
    }
    
    

    多态 多态是继承数据抽象和继承之后的第三种基本特征

    • 编译时只检查引用类型(父类)
    • 运行时指定对象的类型(子类)
    • 重写所执行的方法 必须为父类拥有的方法
    • 不是在运行时才会检测,而是编译时无法检测

    用继承表达行为间的差异,并用字段表达状态上的变化

    封装

    • 封装通过合并特征和行为来创建新的数据类型

    fanalize

    只有当垃圾回收机制执行时,finalize()才会执行,但无论是“垃圾回收”还是“终结”,都不能保证一定会执行

    • 垃圾回收只与内存有关
    • 垃圾回收只回收new出来的对象

    成员初始化

    • 局部变量必须初始化 否则编译错误
    • 成员变量 基本数据类型是有默认值的 对象为null

    静态初始化

    • 静态初始化只有在对象创建的时候进行

    静态代码块

    • 有且只执行一次,在构造函数前执行

    代码块

    • 每次new新的对象,都会再次执行,在构造函数前执行

    继承

    复用类,分为组合语法与继承。组合语法其实就是创建对象的引用来使用

    • 每一个非基本数据类型都有一个toString()方法,将对象转换为String类型。
    • 复用类还有一种实现方式是代理,其实就是在成员里创建类的引用,然后调用

    深拷贝与浅拷贝

    • 浅拷贝 拷贝对象和原始对象的引用类型引用同一个对象。
    • 深拷贝 拷贝对象和原始对象的引用类型引用不同对象。

    相关文章

      网友评论

          本文标题:2.Java一切都是对象

          本文链接:https://www.haomeiwen.com/subject/akipuftx.html