C#類的繼承的一點說明

來源:互聯網
上載者:User

C#中類的繼承是:從一個現有的類中派生新類的類的過程。
而通過繼承,新類自動包括原來的類中的變數和方法。然後,按照需要裁剪這個類,程式員可以增加新的變數到衍生類別中或者修改繼承的類。
總的來說,新類通過繼承可以比重新編寫,來更快、更容易和更廉價地建立。繼承是支援軟體重用的一種方式。(繼承的目的就是重用現有的軟體)。
但是最近看有的資料上說,在繼承中子類並不繼承父類的私人(private)成員。這種說法應該是錯誤的。讓我們明確一下,在繼承中,父類中定義的所有方法和變數,甚至是那些私人(prviate)成員,也由子類繼承。只是這些私人成員不能通過類名或者類的相關對象直接引用。但它們可以間接引用。

讓我們看一個例子來示範這種情況.

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace FoodAnalyzer
 6{
 7    /**//* FoodItem類表示了食物的一般類型。FoodItem的建構函式接收了脂肪的克數和食物的分數。
 8     * Claories方法根據脂肪來返回卡路裡的大小,他觸發了CaloriesPerServing方法來協助計
 9     * 算每份的脂肪卡路裡的大小*/
10     public class FoodItem
11    {
12        const int Calories_Per_Gram = 9;
13        private int fatGrams;
14        protected int servings;
15        public FoodItem(int numFatGrams, int numServings)
16        {
17            fatGrams = numFatGrams;
18            servings = numServings;
19        }
20        private int Calories()
21        {
22            return fatGrams * Calories_Per_Gram;
23
24        }
25        public int CaloriesPerServing()
26        {
27            return (Calories()/servings);
28        }
29    }
30    /**//*Pizzs類從FoodItem類派生,但是它沒有增加特殊功能或者資料。它的建構函式使用了base
31     * 引用條用了FoodItem的建構函式,聲明每個匹薩有8份*/
32    public sealed class Pizza : FoodItem
33    {
34        public Pizza(int fatGrams):base(fatGrams,8)
35        {
36 
37        }
38    }
39    /**//*Main方法執行個體化了一個Pizza對象,觸發了一個方法來判斷每份匹薩含有多少卡路裡,基於他的脂肪含量。*/
40    class FoodAnalyzer
41    {
42        static void Main(string[] args)
43        {
44            Pizza special = new Pizza(275);
45            Console.Out.WriteLine("Calories per serving:"+special.CaloriesPerServing());
46            Console.In.ReadLine();
47        }
48    }
49}
50

Main方法中的稱為special的Pizza對性用於觸發CaloriesPerServing方法(public),它定義為FoodItem的Public方法,所以Pizza的對象肯定繼承了此方法。注意CaloriesPerServing調用了Calories,它聲明為私人可見度。並且,Calories引用了變數fatGrams和常量Calories_Per_Gram,它們也聲明為私人可見度。
即使Pizza類不能顯示引用Calories、fatGrams或者Calories_Per_Gram,當Pizza對象需要它們時可以間接使用它們。Pizzade對象不能用於觸發Calores方法,但是它可以條用一個可以觸發它的方法。注意從去這這個執行個體中我們沒有建立或者需要FoodItem對象。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.