interface-C#接口-統一的標準

文章目錄

  • 接口的定義
  • 接口的實現
    • 實例1
    • 實例2
  • 接口的繼承

  • 博主寫作不容易,孩子需要您鼓勵
  • 萬水千山總是情 , 先點個贊行不行

接口是面向對象編程的一個重要技術,在C#中負責實現多重繼承。一個接口定義一個協定,實現接口類或結構體必須遵守其協定。比如耳機接口,比如顯示器接口。

接口的定義

接口用來描述一種程序的規定,可以 屬于任何類或者結構體的一組相關行為。接口可由方法、屬性、事件、索引器或這4種成員類型任何組合構成。接口不能包含常數、字段、運算符、實例構造函數、析構函數或類型,也不能包含任何種類的靜態成員。接口成員一定是公共的。

  • 定義接口的語法格式如下:
  • <訪問修飾符> interface 接口名{//接口主體}
    

    接口不能包含其所定義的成員的任何實現語句,接口只指定實現該接口的類或必須提供的成員。

    接口的實現

    定義了接口后,就要在類或結構中實現。C#中通常把派生類和基類的關系稱為繼承,類和接口的關系稱為實現。實現接口的語法和繼承類一樣,都有“:”,接口中的方法在類中實現時不是重載,不需要使用override關鍵字。
    接口中不能定義構造函數,所以接口不能實例化。

    實例1

    聲明接口IPoint描述一個點的坐標并實現該接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;namespace test
    {class Program{static void Main(string[] args){Point p = new Point(5, 10);Console.WriteLine("創建的新點坐標為:");Console.WriteLine("X={0},Y={1}", p.x, p.y);Console.ReadKey();}}interface IPoint               //定義Point接口類{                                int x { get; set; }int y { get; set; }}public class Point : IPoint{private int px;private int py;public Point(int x,int y){px = x;py = y;}//接口屬性實現public int x{get { return px; }set { px = value; }}public int y{get { return py; }set { py = value; }}}
    }
    

    運行結果:
    在這里插入圖片描述
    對接口的名稱建議以I開頭,如IPoint,對接口的訪問修飾符可以選擇使用,但是接口的方法前面不能添加任何訪問修飾符,他是隱式公開的;接口不能包含構造函數,接口不能實現任何方法、屬性和索引器。

    實例2

    定義一個接口,接口包含方法,并使用一個類實現接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;namespace test
    {class Program{static void Main(string[] args){Person person1 = new Person("小明", 18, "男");//利用有參構造函數創建對象person1.DisPlay();                              //調用DisPlay方法顯示信息person1.DoWork();person1.DoSport();Console.ReadKey();}}interface IPerson               //定義Point接口類{void DoWork();             //聲明方法void DoSport();}public class Person:IPerson{private String _id;         //身份證號碼字段idpublic string ID            //身份證號碼屬性id{get { return this._id; }set { this._id = value; }}private String _name;       //姓名字段public string Name          //姓名屬性{get { return this._name; }set { this._name = value; }}private int _age;           //年齡字段public int Age              //年齡屬性{get { return this._age; }set { this._age = value; }}private String _gender;       //性別字段public string Gender          //性別屬性{get { return this._gender; }set { this._gender = value; }}public Person()                 //無參構造函數{ }public Person(string name, int age, string gender)    //有參構造函數{this._name = name;this._age = age;this._gender = gender;}public void DoWork(){Console.WriteLine("{0}的任務是工作", this._name);}public void DoSport(){Console.WriteLine("{0}喜歡做運動", this._name);}public void DisPlay()           //基類共用方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲", this._name, this._gender, this._age);}}
    }
    

    運行結果:
    在這里插入圖片描述

    接口的繼承

    C#中的派生類只能有一個基類,不支持類的多重繼承,但可以繼承多個接口,通過接口實現多繼承。如在現實中兒子不但可以繼承父母的財產,如伯父我兒女,也可以繼承伯父的財產,在C#中這屬于多重繼承,要用接口來實現,其實接口就是為了實現多重繼承而產生的。在C#中接口可以多繼承,接口之間可以相互繼承,普通類和抽象類可以繼承自接口。一個類可以同時繼承一個類和多個接口,但是接口不能繼承類。

    ------------------------------------------------------------------------------------------分割線
    ------------------------------------------------------------------------------------------
    
    • 博主簡介:
    • 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
    • 幫忙點個贊吧。哈哈。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254276.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JMeter入門(1):JMeter總體介紹及組件介紹

一、JMeter概述 JMeter就是一個測試工具&#xff0c;相比于LoadRunner等測試工具&#xff0c;此工具免費&#xff0c;且比較好用&#xff0c;但是前提當然是安裝Java環境&#xff1b;JMeter可以做(1)壓力測試及性能測試&#xff1b;(2)數據庫測試&#xff1b;(3)Java程序的測試…

二層交換機、三層交換機和路由器的基本工作原理和三者之間的主要區別

二層交換機:二層交換技術是發展比較成熟&#xff0c;二層交換機屬數據鏈路層設備&#xff0c;可以識別數據包中的MAC地址信息&#xff0c;根據MAC地址進行轉發&#xff0c;并將這些MAC地址與對應的端口記錄在自己內部的一個地址表中。 具體如下&#xff1a; &#xff08;1&…

Unity3D:視物有點眩暈的原因

設置Main Camera 的 Field of View 為100&#xff0c;看物體總覺得很不舒服。 設置為 60 就正常了。 根本原因&#xff0c;有待于分析 轉載于:https://www.cnblogs.com/makebetter/p/7063694.html

使用jQuery清空file文件域的解決方案

使用jQuery清空file文件域的解決方案 var file $("#file") file.after(file.clone().val("")); file.remove();

更改mysql最大連接數

方法一&#xff1a; 打開cmd&#xff0c;用"mysql -u root -p;"命令進入mysql, 輸入命令&#xff1a;show variables like "max_connections" 顯示最大連接數 更改最大連接數 : set global max_connections 5000 方法二&#xff1a; 在my.ini加上 max_co…

根據HTML5 獲取當前位置的經緯度【百度地圖】【高德地圖】

是想讓地圖的定位用戶位置更準確一些。 查看了介紹&#xff1a; http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介紹中拿數據挺簡單。 <!DOCTYPE html> <html> <body> <p id"demo">點擊這個按鈕&#xff0c;獲得您的坐標&…

C#抽象類與密封類-abstract-sealed

文章目錄抽象類和抽象方法實現抽象方法接口、類和抽象類密封類博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 如果說繼承是面向對象設計理論的基石&#xff0c;那么抽象理論和方法就是繼承理論的頂梁柱。 抽象類和抽象方法 簡單的說&#x…

vs2010快捷鍵

Ctrl M O: 折疊所有方法 Ctrl M M: 折疊或者展開當前方法 Ctrl M L: 展開所有方法 1、強迫智能感知&#xff1a;CtrlJ&#xff1b;2、強迫智能感知顯示參數信息&#xff1a;Ctrl-Shift-空格&#xff1b;3、格式化整個塊&#xff1a;CtrlKF4、檢查括號匹配(在左右括號間切…

startup畢業論文

今天起得相對比較晚&#xff0c;為的是一個沒有目的面試&#xff0c;去了的結果。只是打擊一下自己的自信心&#xff0c;走的時候&#xff0c;面試官冷冷的說了一句&#xff0c;你的面試到此結束&#xff0c;是的&#xff0c;我并沒有很傷心&#xff0c;在門外等面試的時候&…

Javascript實現信息滾動效果的方法

<html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>向上無縫滾動</title><style>body { font-size: 12px; line-height: 24px; text-algin: center; /* 頁面內容居中 */}* { ma…

C# delegate與event,委托與事件

文章目錄委托示例事件實例博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 委托和事件是C#中兩個比較復雜的概念&#xff0c;這篇文章介紹兩個概念與基本用法&#xff0c;讓大家理解C#中的事件處理機制。 委托 委托也叫代理&#xff0c;就是把…

路由器與交換機的工作原理

路由器與交換機的工作原理 計算機網絡往往由許多種不同類型的網絡互連連接而成。如果幾個計算機網絡只是在物理上連接在一起&#xff0c;它們之間并不能進行通信&#xff0c;那么這種“互連”并沒有什么實際意義。因此通常在談到“互連”時&#xff0c;就已經暗示這些相互連接的…

Java的四種引用,強弱軟虛,用到的場景(轉+補充)

Q1&#xff1a;引用隊列是什么&#xff1f;如何使用&#xff1f;使用的場景有哪些&#xff1f; A1:oracle的api文檔的描述&#xff1a; https://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.htmlReference queues, to which registered reference objects…

C# lambda表達式與匿名方法

文章目錄匿名方法Lambda表達式實例實例博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 C#中的匿名方法是在C#2.0引入的&#xff0c;它終結了聲明委托的唯一方法是使用命名方法的時代。在C#更高版本中&#xff0c;Lambda表達式取代了匿名方法&a…

LINUx打包命令匯總

.tar 解包&#xff1a;tar xvf FileName.tar 打包&#xff1a;tar cvf FileName.tar DirName &#xff08;注&#xff1a;tar是打包&#xff0c;不是壓縮&#xff01;&#xff09; ——————————————— .gz 解壓1&#xff1a;gunzip FileName.gz 解壓2&#xff1a;…

常用的相似度計算

在數據分析和數據挖掘的過程中&#xff0c;我們經常需要知道個體間差異的大小&#xff0c;進而評價個體的相似性和類別。最常見的是數據分析中的相關分析&#xff0c;數據挖掘中的分 類和聚類算法&#xff0c;如K最近鄰&#xff08;KNN&#xff09;和K均值&#xff08;K-Means&…

玩轉C#窗體-屬性、方法和事件詳細說明

文章目錄簡介Windows窗體的基本屬性一、布局屬性1、StartPosition屬性2、Location屬性3、尺寸屬性4、WindowsState屬性5、Autoscroll屬性6、AutoSize屬性二、樣式屬性1、ControlBox屬性2、MaximizeBox屬性3、MinimizeBox屬性4、HelpButton屬性5、ShowIcon屬性6、Icon屬性7、Sho…

for循環和數組練習

//公雞2文&#xff0c;母雞1文&#xff0c;小雞半文&#xff0c;每種至少一只&#xff0c;100文買100只雞有多少種可能var ci 0; for(var g1;g<50;g){for(var m1;m<100;m){for(var x1;x<100;x){if(g*2m*1x*(0.5)100&&gmx100){ci1;console.log("買公雞&qu…

CMD下查看路由表

在cmd下面輸入route print 就可以查看路由表 如何讀懂路由表如何讀懂路由表 源碼:--------------------------------------------------------------------------------Active Routes: Network Destination Netmask Gateway Interface M…

c# automapper 使用

一、最簡單的用法 有兩個類User和UserDto 1 public class User2 {3 public int Id { get; set; }4 public string Name { get; set; }5 public int Age { get; set; }6 }7 8 public class UserDto9 { 10 public string Na…