关於 物件(Object)与类别(class)

正在复习C#~(书 和影片 文章 看到头晕/images/emoticon/emoticon06.gif)
发现有些观念真的简单又不简单
一定要用自己的方式搞懂~!/images/emoticon/emoticon13.gif
(P.S以下是自学笔记浅谈而已)

物件(object)是什麽?

概念:真实世界中的所有具体或抽象的事物,
都可以将之视为一个『物件』 ,
物件是动态的,状态会随时改变但架构与行为不会改变。

物件(Object)有的特性:

  • 属性(Property):指物件各种特性的现况,物件拥有许多特性(attribute),这些特性代表了一个物件的外观或某些性质。
  • 方法(Method):每个物件都拥有不同的行为,这些行为在物件导向程序设计中称之为方法(Method)指物件的功能。

举例具体的东西
車子
属性(Property):品牌名、速度、排气量、颜色、重量
方法(Method): 往前行驶、倒退、煞車


属性(Property):名字、性别、生日、身高、体重
方法(Method):讲话、吃饭、走路

哈利波特OOP

在程序设计或执行阶段,我们可以藉由改变属性值來改变整个物件的某些特性,完成我们想要的物件表示形式。
例如:把车子漆成蓝色、将波特的眼镜换为方形...等。

物件的宣告

宣告物件的方法,直接使用類别的名称來宣告

class Student
{
   String name;
   String sex;
   int age;
}
Student Harry;   //宣告物件变數Harry

产生物件实体语法(要先建立实体物件,然後才能使用实体属性)

产生物件实体使用的是new运算子,范例如下:

//物件变數 = new 類别名称(引數1,引數2…);
Harry = new Student(); 

可以直接写成这样

Student Harry = new Student();

类别(Class)是什麽?

类别算是一个蓝图、一个范本、一个可参考的文件,他没有 实体 (Instance) 的概念,属静态的
類别可像结构一样,可以在類别中定义多种基本资料型态(如int、char、float)的变數,
这些资料变數称为類别的资料成员(data member)。

類别还可以定义所需的功能函數称为成员函數(member function)。是一种加上行为(函式)的结构
也把「资料」与处理资料的程序「函式」整合起來

类别(Class)有的特性

  • 一个類别包含:

    • 资料成员(Data member)
    • 成员函數(Member functions)
    • 将资料和函數放在一起的动作就称为封装(Encapsu-lation)
  • 由類别所宣告的变數叫做物件(object)

在实际的物件导向程序设计中(例如 C#、Java),我们必须先定义類别,然後才能够透过類别宣告各个属於该類别下的物件,接着再设定物件的属性來代表该物件某方面的特性,并使用物件的方法來操作物件。

宣告類别名称

【范例】

//定义一个Person類别 里面有姓名 性别 及年龄
//资料型态有string字串 与int整数型别

class Person
  {
    String name;
    String sex;
    int age;
  }

物件(Object)与类别(class)两者关系

(引用保哥的比喻/images/emoticon/emoticon24.gif)
盖世武功

类别:武林密笈
物件:修练武林密笈而成的武林高手
两者关系:
武林密笈(类别)记载许多各种攻击与回应的方式,
让武林高手(物件)知道遭遇到什麽攻击时要用什麽招式回应。

程序设计:每执行到我们用 new 运算子时,等同於将物件产生,
也等同於成功得到武林密笈可以开始练功,或是在「建构子」的时候就已经赋予你基本功力。

大概介绍到以上 哈哈
关於所有类型和类型成员都具有存取范围层级
public
protected
internal
protected internal
就等下一篇文章出产啦

来源参考自:
Will保哥的物件导向基础:何谓类别(Class)?何谓物件(Object)?
陈锺诚老师的C#程序教学


<<:  13. STM32-透过SPI驱动MCP2515实现CAN(上)

>>:  【JavaScript】"9" > "12" //true

【第二十四天 - XSS Lab(2)-2】

接续昨天的 XSS Lab(2)-1,今天继续解 https://alf.nu/alert1 Tem...

[Day 22] - 『转职工作的Lessons learned』 - GraphQL (Hasura) - Apollo Client

GraphQL (Hasura)系列,忘记介绍最一开始从前端连线到GraphQL (Hasura)一...

Day23 订单金流 -- 状态异动

在订单成立以及建立金流部份,因为情境非常多, 因此在制定状态的部份其实也是有很多可以讨论的, 还记得...

[DAY-10] 人才密度最大化 留任测试

理想上 一个组织只要慎用选择人才 这些精挑细选而来的员工就会永远发光发热 BUT 有时候是你用人辜...

D15 - 如何用 Apps Script 自动化地创造与客制 Google Docs?(二)快速生出大量寄件信封资料

今天的目标 每逢过年过节,不时会收到些礼物或送出些礼物,但要怎麽样依据不同的对象,来客制化我们的内容...