iT邦幫忙

2021 iThome 鐵人賽

DAY 22
1
自我挑戰組

C# 雞礎觀念系列 第 22

[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 隻老鼠

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


上一篇
[Day21]C# 雞礎觀念- 物件導向(oop)~類別(class)
下一篇
[Day23]C# 雞礎觀念- 物件導向(oop)~屬性(Property)
系列文
C# 雞礎觀念32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言