zoukankan      html  css  js  c++  java
  • 初学者——面向对象的理解

    面向对象

    Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:

    1. 继承    继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法。            
    2. 封装   封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能。
    3. 多态   多态指的是子类对象可以直接赋值给父类变量,但运行时依然表现出子类的行为特征,这意味着统一个类型的对象在运行时可能表现出不同的行为特征。

    Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。

    面向对象还支持如下几个功能:

    • 对象是面向对象方法中最基本的概念,他的基本特点有:标识唯一性、分类性、多态性、封装性、模块独立性好。
    • 类是具有共同属性、共同方法的对象集合。类是对象的抽象;对象则是类的实例。而类是整个软件系统最小的程序单元,类的封装性将各种信息隐藏起来,并通过公用方法来暴露类对外所提供的功能,从而提高了类的内聚性,降低了对象之间的耦合性。
    • 对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。消息是一个实例与另一个实例之间传递的信息。
    • 在面向对象方法中,类之间共享属性和操作的机制称为继承。已有的类可当做基类来引用,则新类相应的可当做派生类来引用。集成具有传递性。可分为单继承(一个继承只允许有一个直接父类,即类等级为树形结构)与多继承(一个类允许有多个直接父类)。

    什么是对象:

    简单点来说就是能看到到或者说在程序中可以直接使用的内容被称之为对象

    对象的创建 :

    类名  对象名=new 类名();

    什么是类

    类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。

    类对象的实例化:

    1. 目前通过new关键字实例化
    2. clone克隆
    3. 反射的:newInstance();
    4. 代理: Proxy.newInstance();

    类的使用和注意:

    类使用class关键字修饰
    类名使用首字母大写的写法
    一个源文件不能代表一个类,原因是一个源文件中可以存放多个类

    java中的四种访问级别:修饰符
    * public:公共 范围是最广的 使用public关键字修饰的任何成员都可以进行调用
    * private:私有的 范围是最窄的 使用private修饰的成员只能在本身类中进行调用
    * protected:在本包中可以调用该方法
    * default:默认不编写访问修饰符的权限 在同级包中的其他类可以使用 不能跨包使用

    成员变量:修饰实体的静态特征,成员变量拥有默认值

    • 数值类型的变量:0
    • boolean:false
    •  String:null
    •  数组:null

    成员方法:

    访问修饰符 返回值类型 方法名(参数){方法体} 声明*
    什么是方法的返回值类型:

    函数执行结束后的结果类型 void 代表为空返回值 return 1 返回值 2 结束方法的运行
    return 后不能编写任何代码
    什么是参数:方法执行的必备条件,参数的个数没有限制

    * 调用阶段:通过对象调用函数 对象名.函数名
    * 参数的数据类型
    * 参数的个数
    * 参数的顺序

    方法的好处:提高了代码的复用性
    * 提升开发效率
    * 可读性强
    * 结构化程序,做结构优化 减少大量的冗余代码


    * this:当前类对象 谁调用就是谁

    两个知识点:

    •  类:
    1.  类不占用内存空间的
    2.  类可以看作为对象的模板 蓝图 所有对象都是通过自身类构建的
    3.  类是将部分实体相同的动态特征和静态特征组成的一种结构
    •  对象:
    1.  对象是通过类实例化来的 占用内存空间
    2.  类看做为对象的抽象概念 对象看作为类的实例
    3.  关心与程序运行相关的特征
    努力到无能为力,拼搏到感动自己
  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/tkzm/p/10936448.html
Copyright © 2011-2022 走看看