zoukankan      html  css  js  c++  java
  • OOAD[1]:类型的意义

    引言:
    在之前工作中,或者博客园中看别人写文章会经常提到一个词“类类型”,那么什么是类类型呢?类型与类究竟什么区别呢?

    为什么会存在类型?类型存在的意义是什么?



    (一)那什么是类型什么是类呢?
    类:人类,动物类,植物类,金融行业这一类的。。。。。。。

    抽象类,密封类,嵌套类,这不是在面向对象里面说的那一套吗?

    就那人类这个词来解释下好了,这个词我也不知道是谁造的,它是一个统称,它不是指张三

    也不是李四,它是一组统称,正如“白马非马”里面的马。关于类型我个人认为是对类的一个

    定位一个描述。

    强类型,弱类型,静态类型,美女类型,帅哥类型。。。。。好像有点扯远了,

    还有int 类型,string 类型,其中我记得最多的时候是在C#里面有操作符,is,

    as ,当前类型是这个类型吗?在JS里面有个函数叫TypeOf():看看当前对象是

    什么类型的,最多的好像是这个吧alert(typeof(当前某个对象));当然在对数

    据库进行数据管理的时候也存在各种各样的类型:char类型,varchar类型......

    用过数据库的人都知道:如果要存软件0602班级每个学生的出生日期,一般会给当前字段用:datetime,

    如果要存名字:varchar了,如果要存成绩这个,int了,呵呵当然,(如果这三个字段我都用varchar,

    也没问题,只要给适当的长度就可以了),一般我不会这么干,那为什么我不会这么干?这个问题很

    复杂了:我是个特别喜欢包包的女孩子:1我有红色的钱包(赚钱用的,还有卡卡),2还有装书用的书包

    (去学校还书的时候比用的),3装衣服还有吃的旅行包(回家看老爸时候装好吃的还有衣服的)

    4一个女孩子当然还要有背包了(其实算是臭美用的吧)......我只把钱放到钱包里面,我不会把衣服

    放到钱包里面,我也不会用装衣服的箱子去装钱(我还是感觉把钱放到银行比较安全),同样的道理,

    计算机就是一个模拟我们日常生活的一个模仿器,一个个类型代表不同的“箱子”,不同的“箱子”装不同的

    东西,比如varchar这个”箱子“,可以装很多东西,你可以自己设这个箱子的大小,来确定装多大的东西。

    现在我们应该明白一个道理:不同类型的东西需要不同类型的容器进行存储

    (二)类型描述

    类型的起源是出自人类的抽象数据理论。

    大家都知道:抽象是我们用来研究这个世界一个手段,或者说是一种方式:比如我说植物,大家肯定会想

    植物的一些基本特征:不会说话,会制造氧气等等,那么植物这个概念,最初是有研究生物的那个特别无聊

    的人给的一个定义,其实这家伙就是想让我们更有层次感的去认识这个复杂的世界而已,才起了一个这么个抽象的

    不容易理解的名字。抽象是我们认知这个世界的一个处理手段。

    学过面向对象的人都知道一个概念:

    类     术语是 class
    类型  术语是 type

    “一个类型是关于数据结构或行为属性的准确描述,一组疏通共享这些属性”


    类型的定义?

    “类型是关于一个对象的类的强制规定,这样一来,不同的类型对象不能相互使用,或者只是

    他们的交互使用受到非常严格的限制”

    类型会有很多:强类型(C#),弱类型(JS),无类型(这个没学过),但是他们都可以称为是面向对象的。

    类型的强与弱,是指类型的一致性(这句话好难理解呀)。

    类型匹配是类型概念的核心。

    还是回到我们认识这个世界的开始抽象概念,为了描述距离时间速度,我们的前人写了个公式是:

    路程除以时间等于速度,不等于重量。

    我们的前人规定的:路程时间速度是一组抽象的匹配,意思就是说,这几个变量必须在一块。

    这就是我们说的类型匹配。

    强类型的好处:

    1.如果没有类型检查(强类型会自动的进行类型检查),大部分语言的程序在运行时会以某种神秘的方式“崩溃”
    2.在大多数系统里面,编辑--编译--调试循环很频繁,所以早期错误检查是必不可少的,强类型语言很重要哦。
    3.类型声明有助于为程序编写文档
    4.如果声明类型,大部分编译器可以生成有效的目标代码


    经常写代码的时候,看一个方法,第一件事情就是看看这个函数返回什么类型的(基本是强类型语言了C#),

    js是种弱类型语言,在第一次给当前参数赋值的时候,决定当前对象是什么类型。关于无类型,我了解甚少

    以及这三种类型之间的语言的定义(也就是说强类型语言,弱类型语言,无类型语言靠什么区分开来的)。


    类型的列子:静态类型与动态类型

    这个概念与类型的强与弱是完全不同的,静态类型与动态类型是指:名字与类型绑定的时间.

    静态类型的定义:也成为静态绑定,早期绑定,意味着:所有的变量与表达式在编译的时候已经固定

    动态类型:是迟后绑定,所有的变量与表达式在运行式才知道

    一种语言可以是强类型也可以是静态类型---ada

    一种语言可以是强类型也支持动态类型---c++,java

    一种语言即是无类型也支持动态类型---smalltalk

        多态(polymorphism)是动态类型与继承互相作用出现的一种情况。多态是一个名字(如:一个变量的声明),
    可以代表许多不同类的对象,这些类具有共同的超类。这个名字所代表的对象因此可以响应一组共同的对象。


    那么什么是类类型呢?
    如果我说INT类型,枚举类型大家都能理解,然后我说int是个内置的类,枚举也是个内置的类,那我在说
    int与枚举都是类类型。这是从一个角度进行解释的。

    类一般可以实例化为对象,也就是我们编码中的class,根据类可以创建很多对象,美女类,可以创建美女,
    可以创建n个美女。而这里美女类型,只是对当前美女的一个描述。

    总结:
    1.一般在编码的时候我们习惯去拿当前对象是什么类型,一般是判断,然后进行下面什么样的操作
    2.根据类型进行类型直接的转换,比如我们经常会将INT类型去转化为String类型,为什么我们需要转化,
    那就是上面所说的类型匹配。就好比不同型号的手机充电器,几乎是不能通用的。
    3.类型是关于一个对象的类的强制规定,这样一来,不同的类型对象不能相互使用,或者只是
    他们的交互使用受到非常严格的限制

    备注:关于类与类型严格的说不是一回事,但是区分这两个概念没太大价值,只要说类实现了类型就足够了。






  • 相关阅读:
    2022年第一天
    RestTemplate、 Ribbon、 OpenFeign 关系以及OpenFeign使用连接池
    linux下面编写简单的c++程序
    Rocket简介以及单机版安装
    事务源码(二)
    javaagent技术&Attach技术
    gateway网关原理
    Maven自定义插件以及使用
    AotucCrawler 快速爬取图片
    Monkey工具之fastbotiOS实践
  • 原文地址:https://www.cnblogs.com/muer/p/OOAD1.html
Copyright © 2011-2022 走看看