剛做的網(wǎng)站適合做外鏈嗎需要推廣的app在哪里找
在面向?qū)ο缶幊讨?#xff0c;繼承是一種機(jī)制,允許一個(gè)類(稱為子類或派生類)從另一個(gè)類(稱為父類或基類)繼承屬性和方法。繼承使我們能夠創(chuàng)建一個(gè)通用類,然后根據(jù)需要擴(kuò)展或修改它以創(chuàng)建更具體的類。以下是一些關(guān)于父類和子類以及它們之間繼承關(guān)系的基本概念和解釋。
一、父類、子類及類的繼承關(guān)系
1.父類(基類)
- 父類是一個(gè)通用的類,它定義了一組屬性和方法,這些屬性和方法可以被多個(gè)子類共享。
- 父類通常是較抽象的,表示一個(gè)更通用的概念。例如,
Animal
(動(dòng)物)類可以是一個(gè)父類,表示所有動(dòng)物的共同屬性和行為。
2.子類(派生類)
- 子類是從父類派生出來的類。它繼承了父類的所有屬性和方法,但也可以添加自己特有的屬性和方法。
- 子類表示一個(gè)更具體的概念。例如,
Cat
(貓)類和Dog
(狗)類可以是從Animal
類派生出來的子類,表示具體的動(dòng)物種類。
3.繼承關(guān)系
3.1 繼承屬性和方法
- 子類繼承父類的所有非私有屬性和方法。這意味著子類可以直接使用父類中的代碼。
- 子類可以覆蓋父類的方法(即方法重寫),以提供特定于子類的實(shí)現(xiàn)。
3.2 繼承的語法
- 在C#中,使用冒號(hào)
:
來表示繼承。
下面是一個(gè)示例:
public class Animal
{public string Sound { get; set; }public int Age { get; set; }public string Color { get; set; }
}public class Cat : Animal
{public Cat(){Sound = "Meow";}
}public class Dog : Animal
{public Dog(){Sound = "Woof";}
}
3.3 示例解釋
在上面的示例中:
Animal
類是父類,定義了三個(gè)屬性:Sound
(叫聲)、Age
(年齡)和Color
(顏色)。Cat
類和Dog
類是從Animal
類繼承的子類。它們各自有一個(gè)構(gòu)造函數(shù),在創(chuàng)建對(duì)象時(shí)設(shè)置Sound
屬性的默認(rèn)值。
3.4 使用繼承的優(yōu)點(diǎn)
-
代碼重用:
- 繼承允許子類重用父類中的代碼,減少了代碼的重復(fù),提高了代碼的可維護(hù)性。
-
擴(kuò)展性:
- 可以通過繼承擴(kuò)展現(xiàn)有類,而不需要修改原有的代碼。這樣,系統(tǒng)更容易擴(kuò)展和維護(hù)。
-
多態(tài)性:
- 繼承是實(shí)現(xiàn)多態(tài)性的一種手段。通過繼承,可以使用父類的引用來指向子類的對(duì)象,從而實(shí)現(xiàn)不同的行為。
二、代碼實(shí)現(xiàn)
本次代碼基于WPF代碼實(shí)現(xiàn)觀察現(xiàn)象
1.C#代碼:MainWindow.xaml.cs
using System;
using System.ComponentModel;
using System.Windows;namespace WpfApp
{// 定義動(dòng)物基類public class Animal : INotifyPropertyChanged{private string sound; // 動(dòng)物的叫聲private int age; // 動(dòng)物的年齡private string color; // 動(dòng)物的顏色// 動(dòng)物的叫聲屬性public string Sound{get { return sound; }set{sound = value;OnPropertyChanged("Sound");}}// 動(dòng)物的年齡屬性public int Age{get { return age; }set{age = value;OnPropertyChanged("Age");}}// 動(dòng)物的顏色屬性public string Color{get { return color; }set{color = value;OnPropertyChanged("Color");}}// 實(shí)現(xiàn)INotifyPropertyChanged接口,用于屬性改變通知public event PropertyChangedEventHandler PropertyChanged;protected virtual void OnPropertyChanged(string propertyName){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}// 定義貓類,繼承自動(dòng)物類public class Cat : Animal{public Cat(){Sound = "Meow"; // 初始化貓的叫聲}}// 定義狗類,繼承自動(dòng)物類public class Dog : Animal{public Dog(){Sound = "Woof"; // 初始化狗的叫聲}}// 定義羊類,繼承自動(dòng)物類public class Sheep : Animal{public Sheep(){Sound = "Baa"; // 初始化羊的叫聲}}// WPF窗口的后臺(tái)代碼public partial class MainWindow : Window{public MainWindow(){InitializeComponent();// 創(chuàng)建動(dòng)物對(duì)象,并設(shè)置它們的屬性Animal cat = new Cat { Age = 3, Color = "Gray" };Animal dog = new Dog { Age = 5, Color = "Brown" };Animal sheep = new Sheep { Age = 2, Color = "White" };// 將動(dòng)物對(duì)象綁定到WPF窗口的DataContextDataContext = new { Cat = cat, Dog = dog, Sheep = sheep };}}
}
2.XAML代碼:MainWindow.xaml
<Window x:Class="WpfApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="Animals" Height="300" Width="300"><Grid><Grid.RowDefinitions><!-- 定義三個(gè)行,每個(gè)行用于顯示一種動(dòng)物的信息 --><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><!-- 貓的邊框 --><Border Grid.Row="0" BorderBrush="Black" BorderThickness="1" Margin="5"><StackPanel><!-- 顯示動(dòng)物種類名稱 --><TextBlock Text="Cat" FontWeight="Bold" HorizontalAlignment="Center"/><!-- 綁定并顯示貓的叫聲 --><TextBlock Text="{Binding Cat.Sound}" /><!-- 綁定并顯示貓的年齡 --><TextBlock Text="{Binding Cat.Age}" /><!-- 綁定并顯示貓的顏色 --><TextBlock Text="{Binding Cat.Color}" /></StackPanel></Border><!-- 狗的邊框 --><Border Grid.Row="1" BorderBrush="Black" BorderThickness="1" Margin="5"><StackPanel><!-- 顯示動(dòng)物種類名稱 --><TextBlock Text="Dog" FontWeight="Bold" HorizontalAlignment="Center"/><!-- 綁定并顯示狗的叫聲 --><TextBlock Text="{Binding Dog.Sound}" /><!-- 綁定并顯示狗的年齡 --><TextBlock Text="{Binding Dog.Age}" /><!-- 綁定并顯示狗的顏色 --><TextBlock Text="{Binding Dog.Color}" /></StackPanel></Border><!-- 羊的邊框 --><Border Grid.Row="2" BorderBrush="Black" BorderThickness="1" Margin="5"><StackPanel><!-- 顯示動(dòng)物種類名稱 --><TextBlock Text="Sheep" FontWeight="Bold" HorizontalAlignment="Center"/><!-- 綁定并顯示羊的叫聲 --><TextBlock Text="{Binding Sheep.Sound}" /><!-- 綁定并顯示羊的年齡 --><TextBlock Text="{Binding Sheep.Age}" /><!-- 綁定并顯示羊的顏色 --><TextBlock Text="{Binding Sheep.Color}" /></StackPanel></Border></Grid>
</Window>
3.代碼解釋
-
C#代碼:
Animal
類是一個(gè)基類,定義了三個(gè)屬性:Sound
(叫聲)、Age
(年齡)、Color
(顏色)。這些屬性通過INotifyPropertyChanged
接口來通知屬性變化。Cat
、Dog
和Sheep
類是從Animal
類繼承的子類。它們?cè)跇?gòu)造函數(shù)中設(shè)置了各自的默認(rèn)叫聲。MainWindow
類是WPF窗口的后臺(tái)代碼。在構(gòu)造函數(shù)中,創(chuàng)建了Cat
、Dog
和Sheep
對(duì)象,并設(shè)置它們的屬性。然后,將這些對(duì)象綁定到窗口的DataContext
。
-
XAML代碼:
- 定義了一個(gè)
Grid
布局,其中包含三個(gè)行,每行用于顯示一種動(dòng)物的信息。 - 每種動(dòng)物的信息顯示在一個(gè)
Border
中,Border
內(nèi)部是一個(gè)StackPanel
。 StackPanel
包含一個(gè)顯示動(dòng)物種類名稱的TextBlock
和三個(gè)綁定到動(dòng)物屬性的TextBlock
。- 通過綁定 (
Binding
),TextBlock
顯示來自DataContext
中Cat
、Dog
和Sheep
對(duì)象的屬性值。
- 定義了一個(gè)