IT铁人DAY 2-物件导向基本概念(1)

前一天有提过,物件导向程序的个个物件都有自己该做的事,而且各自可以独立作业,不过彼此间也能够分工合作。接下来就来讲各物件是如何运作的吧!


物件导向的语言有哪些?

  首先介绍物件导向的语言有哪些,其实很多程序语言都支援物件导向,包括了C语言大家族、Java、Delphi、Swift、Python、 PHP等等,几乎平常用得到的程序语言都可以写物件导向,只在於说我们有没有去使用到这个功能而已。

基本概念

类别(Class)

  类别,在物件导向中是很重要的概念之一,它定义了一件事物拥有的属性(Attribute)方法(Method),其属性就是事物本身呈现的模样,而方法则是事物本身能做哪些事情,详情请看下面的程序范例(Java):

class Employee {
    int ID;
    String name;
    int age;
    int depID;
    String depName;

    public Employee(int id, String name, int age) {  //此为建构子(Constructor)
        ID = id;
        this.name = name;
        this.age = age;
    }

    //以下为方法(Method)
    public void setDepartment(int depID, String depName) {
        this.depID = depID;
        this.depName = depName;
    }

    public String getEmployeeInfo() {
        return "员工编号:" + ID + " 员工姓名:" + name + " 员工年龄:" + age;
    }

    public String getDepartment() {
        return "部门编号:" + depID + " 部门名称:" + depName;
    }
}

  如上面的程序范例定义了一件事物(一位员工)所拥有的属性(员工编号、员工姓名、员工年龄、部门编号、部门名称)和方法(setDepartment()、getEmployeeInfo()、getDepartment()),这就是一个类别里基本会拥有的抽象特徵。

物件(Object)

  在物件导向的概念里,物件就是类别的实例,甚麽意思呢?让我用下面范例来解释:

public class Company{

    public static void main(String []args){

        Employee Jack = new Employee(123, "Jack", 45);

    }
}

  可以看到,我们在程序里宣告了Jack是一位员工,Jack是一个具体的人,员工则是一个称谓(抽象的概念)。

Employee Jack = new Employee(123, "Jack", 45);
Employee Tom = new Employee(148, "Tom", 30);
Employee John = new Employee(136, "John", 26);

  可以透过宣告的方式,来产出许多的物件(Jack、Tom 、John),而他们各自拥有属於自己的属性,都是独立个个体,彼此不互相影响。

  

建构子(Constructor)

  再来讲的是建构子,甚麽是建构子呢?它是为了初始化类别的一个函式,我想眼尖的朋友已经发现, Employee 後面那串文字,就是在描述一个物件具有的属性,那我们在宣告的时候,同时就赋予它需要的值。那建构子长甚麽样子呢?请看以下程序码:

class Employee {
    int ID;
    String name;
    int age;

    public Employee(int id, String name, int age) {  //此为建构子(Constructor)
        ID = id;
        this.name = name;
        this.age = age;
    }
}

  可以看到 Employee 这个类别里有个建构子也叫 Employee ,而後面带的参数,就是为了要在宣告物件的时候,依照对应的参数,填入此物件对应属性的值,这样就可以使用此物件来做事情罗!

  关於物件导向的基本概念还没结束,下一篇会再介绍类别中的方法该怎麽使用,以及物件导向的三大特性。


除此之外,也欢迎大家走走逛逛关於我们团队夥伴的文章
lu23770127 - SASS 基础初学三十天
10u1 - 糟了!是世界奇观!
juck30808 - Python - 数位行销分析与 Youtube API 教学
SiQing47 - 前端?後端?你早晚都要全端的,何不从现在开始?


<<:  网页三巨头:HTML、CSS、JavaScript的关联性

>>:  # Day 8 Why the “volatile” type class should not be used

我们的基因体时代-AI, Data和生物资讯 Day24- 使用tidyverse观念来分析基因资料:plyranges

上一篇我们的基因体时代-AI, Data和生物资讯 Day23- 基因注释资料在Bioconduct...

[Day 26]从零开始学习 JS 的连续-30 Days---冒泡与捕捉事件

冒泡事件- event Bubbling vs. 捕捉事件- event capturing add...

用新技术加强您的内部稽核-将稽核软件引入组织的 7 个步骤

在 2000 年代初期,内部稽核团队的典型工作重点是完成对特定财务和运营领域的传统周期性稽核——这一...

TailwindCSS 从零开始 - dark 深色模式

深色模式的原理 TailwindCSS 有趣的还有深色模式,可以透过 media 与 class ...

周末雨会(三):用回圈跑阵列再加上条件式 Array Loops And Conditions

从宿舍走到餐厅的路上可以看到台风肆掠的痕迹,诗忆一个不留神踩到树枝,往後滑倒,幸好旁边的唯心马上扶住...