封裝繼承接口c#

面向對象編程,可以使重複代碼變少,通過類實現。面對對象三大特徵:封裝、繼承、多態。要有重用性、靈活性和擴展性。
1表現c#面向對象的編程。

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

namespace ConsoleApp3
{
    class He
    {
        public void Ndf()
        {
            Console.WriteLine("第一步看正店。");
        }
        public  void Rwe(string thing)
        {
            Console.WriteLine("我看中了"+thing+"這家店。");
        }
        public void Rfs()
        {
            Console.WriteLine("決定吃土買。");
        }
    }
    class Program
    {
        public  static void Main(string[] args)
        {
            He t = new He();
            t.Ndf();
            t.Rwe("華姿儀賞");
            t.Rwe("小先生漢服");
            t.Rfs();
            Console.ReadKey();
        }
    }
}

封裝與繼承:
封裝即將數據和方法等集合在一個個單元中,我們稱之爲類,意義:保護代碼,屏蔽複雜性。
繼承即一個類繼承於另一個類,即這個類包含另一個類的東西但用不等於另一個類。被繼承的類叫父類或者基類,繼承的類叫子類或者派生類。
比如:
class A{
blablablabalbalbabla
}
class B:A{
}
抽象類:abstract(父類)和override(子類),父類中抽象方法不能實現,父類抽象方法只能出現在抽象類中。抽象類不能直接實例化(即 XXX t=new XXX()😉。
子類的數據可以用父類來定義,即多態。
抽象類中可以有普通方法。
??待解決問題:抽象類不能實例化,那抽象類中的普通方法怎麼使用????

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

namespace ConsoleApp3
{
    public abstract class  Food
    {
        //在抽象父類中是不能定義方法,否則報錯。
        public abstract void Eat();
        public void Sdw()
        {
            Console.WriteLine("傷害+1。");
        }
    }
    //繼承子類:父類
    //子類的函數前面要賈override
    public class Apple : Food
    {
        public override void Eat()
        {
            Console.Write("Hp+10。");
        }
    }
    public class Water : Food
    {
        public override void Eat()
        {
            Console.WriteLine("Mp+10。");
        }
    }
    class Program
    {
        public  static void Main(string[] args)
        {
            Food t = new Apple();
            Food f = new Water();
            //抽象類不能實例化那怎麼使用抽象類的普通方法??
            t.Eat();
            f.Eat();
            Console.ReadKey();
        }
    }
}

內存中有五個區域:
1 代碼區
2常量區(用於存放常量)
3堆區(由程序員自己開闢並管理內存)
4棧區(系統自動管理)
5靜態區(全局區)(程序運行過程不釋放)

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

namespace ConsoleApp3
{
    interface IDww
    {
        int x
        {
            get;
            set;
        }//接口中允許這樣定義int變量,聲明屬性存取規則。
        int y
        {
            get;
            set;
        }
        //void Dse();
    }//接口中方法不允許有指令,接口是聲明抽象,不能實例。
    class Mypoint :IDww//方法的實現是在接口的類中
    {
        private int myx;
        private int myy;
        public  Mypoint(int x,int y)//構造函數
        {
            Console.WriteLine("接口的方法。");
            myx = x;
            myy = y;
        }
        //接口定義中屬性成員x的實現
        public int x
        {
            get
            {
                return myx;
            }
            set
            {
                myx=value;//這個地方不懂》》》》
            }
        }
        //接口定義中y屬性的實現
    public int y
{
    get
    {
        return myy;
    }
    set
    {
        myy = value;
    }
}
}//接口的定義 interface Iblablablablabla(前綴必有I)。
    class MainClass
    {
        private  static void PrintPoint(IDww p)//接口
        {
            Console.WriteLine("x={0},y={1}", p.x,p.y);
        }
        public static void Main(string[] args)
        {
            Mypoint p = new Mypoint(2, 3);

            Console.Write("My Point: ");
            PrintPoint(p);
            Console.ReadKey();
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章