[Day22]C# 鸡础观念- 物件导向(oop)~物件(Object)

在程序语言中万物皆物件,
就如同真实世界中,
所有物质接由元素组成一般

物件基本原理/images/emoticon/emoticon50.gif

  • C#通过new来创建物件,执行new後系统会在记忆体分配一个空间给数据成员,这过程我们将其称为实例化
  • 实例化之後的所有成员都会被初始化为null,整数成员也会被初始化为0
  • 如果我们创建多个物件但都是同一个类别,那麽大家都共用同样的程序码,但不共用数据,而且每个物件都会在记忆体中拥有自己的内存空间

实例化语句如下:

  • 记忆体将切割一个内存空间给Kitty做使用,并且Kitty将会拥有Cat类别的所有成员

https://ithelp.ithome.com.tw/upload/images/20210922/20097001hEsxwvPiIB.png

如何使用成员呢?

  • 这边我们需要使用到点运算符,透过点运算符我们可以呼叫到Kitty底下的公有成员

https://ithelp.ithome.com.tw/upload/images/20210922/20097001oQCmWOEFf4.png

如何呼叫函式呢?

  • 一样使用点运算符,我们就能呼叫到Kitty底下的公有函数
    https://ithelp.ithome.com.tw/upload/images/20210922/20097001cVi1nCAJFU.png

范例:我们沿用Day21的程序码来做练习

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //我们实例化两个类
            Cat cat1 = new Cat();
            Cat cat2 = new Cat();

            //填写cat1数据成员
            cat1.name = "惭愧一只猫";
            cat1.age = 10;

            //填写cat2数据成员
            cat2.name = "无悔一只猫";
            cat2.age = 35;

            //显示结果
            Console.WriteLine("姓名 : " + cat1.name + ",年龄 : " + cat1.age);
            Console.WriteLine("姓名 : " + cat2.name + ",年龄 : " + cat2.age);
            Console.ReadKey();
        }
    }
    class Cat
    {
        //名称
        public string name;
        //年龄
        public int age;
        //老鼠数量
        public int miceCount = 0; //记录抓几只老鼠
        //方法成员
        //方法:打招呼
        public void Hello()
        {
            Console.WriteLine("嗨!我是{0} ", name);
        }
        //方法:喵喵叫
        public void Meow()
        {
            Hello();
            Console.WriteLine("喵~~~~~喵~~~");
        }
        //方法:捉老鼠
        public void CaseMice()
        {
            miceCount++;
            Hello();
            Console.WriteLine("我已经抓了 {0} 只老鼠", miceCount);
        }
    }
}

结果:

姓名 : 惭愧一只猫,年龄 : 10
姓名 : 无悔一只猫,年龄 : 35

范例:我们看看方法的状况

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //我们实例化两个类
            Cat cat1 = new Cat();
            Cat cat2 = new Cat();

            //填写cat1数据成员
            cat1.name = "惭愧一只猫";
            cat1.age = 10;

            //填写cat2数据成员
            cat2.name = "无悔一只猫";
            cat2.age = 35;

            //让惭愧一只猫抓两只老鼠
            cat1.CaseMice();
            cat1.CaseMice();

            //让无悔一只猫抓一只老鼠
            cat2.CaseMice();

            //显示结果
            Console.WriteLine("姓名 : " + cat1.name + ",年龄 : " + cat1.age + ",共抓 " + cat1.miceCount + " 只老鼠");
            Console.WriteLine("姓名 : " + cat2.name + ",年龄 : " + cat2.age + ",共抓 " + cat2.miceCount + " 只老鼠");
            Console.ReadKey();
        }
    }
    class Cat
    {
        //名称
        public string name;
        //年龄
        public int age;
        //老鼠数量
        public int miceCount = 0; //记录抓几只老鼠
        //方法成员
        //方法:打招呼
        public void Hello()
        {
            Console.WriteLine("嗨!我是{0} ", name);
        }
        //方法:喵喵叫
        public void Meow()
        {
            Hello();
            Console.WriteLine("喵~~~~~喵~~~");
        }
        //方法:捉老鼠
        public void CaseMice()
        {
            miceCount++;
            Hello();
            Console.WriteLine("我已经抓了 {0} 只老鼠", miceCount);
        }
    }
   }

结果:

嗨!我是惭愧一只猫
我已经抓了 1 只老鼠
嗨!我是惭愧一只猫
我已经抓了 2 只老鼠
嗨!我是无悔一只猫
我已经抓了 1 只老鼠
姓名 : 惭愧一只猫,年龄 : 10,共抓 2 只老鼠
姓名 : 无悔一只猫,年龄 : 35,共抓 1 只老鼠

以上就是物件,最基本元素的用法,我们明天见喽


<<:  从 JavaScript 角度学 Python(22) - GitHub API

>>:  推论统计-z检定、t检定是什麽?

Day05-Kubernetes 那些事 -基本观念与操作

前言 接下来就正式进入本系列文的重头戏:Kubernetes,Kubernetes 可以说是近期快速...

[Day-02] - Annotation Modulize Introduction

Abstract Annotation的技术风格为Java 5 之後所推畅出来的新模式,并将注解区分...

<新手复习向> <CSS学习第1集/>:{简单介绍与常见属性;}

CSS是啥? 全名为(Cascading Stylesheets),谷哥中文是阶层样式表,是一种风...

Day7 配对条件范例 (角色,人数上限)

今天我们要自己假订一个配对情境,来做一个比官方稍微复杂一点点的 Demo,并且透过这个模拟情境的实践...

Day.22 「让我们在更深入函式~」 —— JavaScript call & apply & arguments

之前我们有说过,再调用函式的时候,浏览器会传递隐藏的参数给我们函式 一个是「this」,除了 th...