WPF学习(1)--类与类的继承

在面向对象编程中,继承是一种机制,允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法。继承使我们能够创建一个通用类,然后根据需要扩展或修改它以创建更具体的类。以下是一些关于父类和子类以及它们之间继承关系的基本概念和解释。

一、父类、子类及类的继承关系

1.父类(基类)

  • 父类是一个通用的类,它定义了一组属性和方法,这些属性和方法可以被多个子类共享。
  • 父类通常是较抽象的,表示一个更通用的概念。例如,Animal(动物)类可以是一个父类,表示所有动物的共同属性和行为。

2.子类(派生类)

  • 子类是从父类派生出来的类。它继承了父类的所有属性和方法,但也可以添加自己特有的属性和方法。
  • 子类表示一个更具体的概念。例如,Cat(猫)类和Dog(狗)类可以是从Animal类派生出来的子类,表示具体的动物种类。

3.继承关系

3.1 继承属性和方法

  • 子类继承父类的所有非私有属性和方法。这意味着子类可以直接使用父类中的代码。
  • 子类可以覆盖父类的方法(即方法重写),以提供特定于子类的实现。

3.2 继承的语法

  • 在C#中,使用冒号:来表示继承。

下面是一个示例:

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类是父类,定义了三个属性:Sound(叫声)、Age(年龄)和Color(颜色)。
  • Cat类和Dog类是从Animal类继承的子类。它们各自有一个构造函数,在创建对象时设置Sound属性的默认值。

3.4 使用继承的优点

  1. 代码重用:

    • 继承允许子类重用父类中的代码,减少了代码的重复,提高了代码的可维护性。
  2. 扩展性:

    • 可以通过继承扩展现有类,而不需要修改原有的代码。这样,系统更容易扩展和维护。
  3. 多态性:

    • 继承是实现多态性的一种手段。通过继承,可以使用父类的引用来指向子类的对象,从而实现不同的行为。

二、代码实现

本次代码基于WPF代码实现观察现象

1.C#代码:MainWindow.xaml.cs

using System;
using System.ComponentModel;
using System.Windows;namespace WpfApp
{// 定义动物基类public class Animal : INotifyPropertyChanged{private string sound; // 动物的叫声private int age;      // 动物的年龄private string color; // 动物的颜色// 动物的叫声属性public string Sound{get { return sound; }set{sound = value;OnPropertyChanged("Sound");}}// 动物的年龄属性public int Age{get { return age; }set{age = value;OnPropertyChanged("Age");}}// 动物的颜色属性public string Color{get { return color; }set{color = value;OnPropertyChanged("Color");}}// 实现INotifyPropertyChanged接口,用于属性改变通知public event PropertyChangedEventHandler PropertyChanged;protected virtual void OnPropertyChanged(string propertyName){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}// 定义猫类,继承自动物类public class Cat : Animal{public Cat(){Sound = "Meow"; // 初始化猫的叫声}}// 定义狗类,继承自动物类public class Dog : Animal{public Dog(){Sound = "Woof"; // 初始化狗的叫声}}// 定义羊类,继承自动物类public class Sheep : Animal{public Sheep(){Sound = "Baa"; // 初始化羊的叫声}}// WPF窗口的后台代码public partial class MainWindow : Window{public MainWindow(){InitializeComponent();// 创建动物对象,并设置它们的属性Animal cat = new Cat { Age = 3, Color = "Gray" };Animal dog = new Dog { Age = 5, Color = "Brown" };Animal sheep = new Sheep { Age = 2, Color = "White" };// 将动物对象绑定到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><!-- 定义三个行,每个行用于显示一种动物的信息 --><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><!-- 猫的边框 --><Border Grid.Row="0" BorderBrush="Black" BorderThickness="1" Margin="5"><StackPanel><!-- 显示动物种类名称 --><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><!-- 显示动物种类名称 --><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><!-- 显示动物种类名称 --><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.代码解释

  1. C#代码:

    • Animal 类是一个基类,定义了三个属性:Sound(叫声)、Age(年龄)、Color(颜色)。这些属性通过INotifyPropertyChanged接口来通知属性变化。
    • CatDogSheep 类是从 Animal 类继承的子类。它们在构造函数中设置了各自的默认叫声。
    • MainWindow 类是WPF窗口的后台代码。在构造函数中,创建了 CatDogSheep 对象,并设置它们的属性。然后,将这些对象绑定到窗口的 DataContext
  2. XAML代码:

    • 定义了一个 Grid 布局,其中包含三个行,每行用于显示一种动物的信息。
    • 每种动物的信息显示在一个 Border 中, Border 内部是一个 StackPanel
    • StackPanel 包含一个显示动物种类名称的 TextBlock 和三个绑定到动物属性的 TextBlock
    • 通过绑定 (Binding),TextBlock 显示来自 DataContextCatDogSheep 对象的属性值。

4.现象显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/349186.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3-滑动到最右验证功能

1、思路 1、在登录页面需要启动向右滑块验证 2、效果图 3、文章地址&#xff1a;滑动验证码的实现-vue-simple-verify 2、成分分析 1、由三块构成&#xff0c;分别是底部条、拖动条、拖动移动部分 2、底部条&#xff1a;整体容器&#xff0c;包括背景、边框和文字&#xf…

2024中国翻译行业发展报告

来源&#xff1a;中国翻译协会 近期历史回顾&#xff1a; 2024国内工商业储能市场研究报告.pdf 2023幸福企业白皮书.pdf 2024年欧亚地区移动经济报告.pdf 内容供应链变革 2023人工智能与首席营销官&#xff08;CMO&#xff09; AI科技对PC产业的影响.pdf 金融业数据应用发展报…

多应用对接企业微信授权和扫码登录

多应用对接企业微信授权和扫码登录是一种常见的企业级解决方案&#xff0c;它可以帮助企业实现统一的身份验证和管理&#xff0c;提升用户体验和安全性。本文将介绍如何实现多应用对接企业微信授权和扫码登录的方法和步骤。 # 第一步&#xff1a;注册企业微信开放平台应用 首…

批量文件重命名技巧:轻松替换删除文件夹名中的字母,实现高效文件管理新境界

在数字化时代&#xff0c;我们每天都会面对大量的文件和文件夹。无论是工作文档、学习资料还是个人收藏&#xff0c;文件命名的规范性都显得尤为重要。然而&#xff0c;手动一个一个去修改文件名&#xff0c;不仅耗时耗力&#xff0c;还容易出错。那么&#xff0c;有没有一种方…

Linux-黑马程序员

目录 一、前言二、初识Linux1、操作系统&#xff08;1&#xff09;硬件和软件&#xff08;2&#xff09;操作系统 2、Linux3、虚拟机4、FinalShell5、WSL6、虚拟机快照 三、Linux基础命令1、Linux的目录结构2、Linux命令入门&#xff08;1&#xff09;Linux命令基础格式&#x…

UDS诊断、整车控制器诊断、ECU刷写、TBOX测试、GW测试

需要以下资料的可以私信我 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的&#xff1f;上车实测之前有没有一个仿真环境台架环境都什么零部件T-BOX了解多少Linux和shell有接触吗 单片机uds诊断是在实车上座的吗 uds在实车上插的那口 诊断仪器是哪个车机有没…

ESP RainMaker®为企业提供AIoT云解决方案,启明云端乐鑫代理商

在AIoT的浪潮中&#xff0c;企业面临着前所未有的机遇与挑战。如何快速响应市场变化&#xff0c;开发出具有竞争力的智能产品&#xff1f;如何确保数据安全&#xff0c;同时实现高效的设备管理&#xff1f;这些问题&#xff0c;ESP RainMaker给出了答案。 ESP RainMaker是一个…

openh264 帧内预测编码过程源码分析

函数关系 说明&#xff1a; 可以看到完成帧内预测编码的核心函数就是 WelsMdI16x16、WelsMdI4x4、WelsMdI4x4Fast 、WelsMdIntraChroma 四个函数。 原理 WelsMdI16x16函数 功能&#xff1a;针对16x16像素块的帧内模式决策过程&#xff1a; 局部变量申明&#xff1b;根据宏块…

GAN的入门理解

这一篇主要是关于生成对抗网络的模型笔记&#xff0c;有一些简单的证明和原理&#xff0c;是根据李宏毅老师的课程整理的&#xff0c;下面有链接。本篇文章主要就是梳理基础的概念和训练过程&#xff0c;如果有什么问题的话也可以指出的。 李宏毅老师的课程链接 1.概述 GAN是…

Android14音频进阶之CarAudioManager::getOutputDeviceForUsage流程分析(七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

项目启动|鑫泓佳电子牵手盘古信息,迈向数字化转型新征程

随着科技的迅猛发展和数智化浪潮的推进&#xff0c;电子行业正经历着一场前所未有的深刻变革。在这场变革中&#xff0c;深圳市鑫泓佳电子有限公司&#xff08;以下简称“鑫泓佳电子”&#xff09;凭借其敏锐的市场洞察力和前瞻性的战略规划&#xff0c;一直保持在行业的前列。…

46-4 等级保护 - 网络安全等级保护概述

一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…

MES系统助力制造业数字化转型

一、MES系统的定义和功能 MES&#xff08;Manufacturing Execution System&#xff09;即制造执行系统&#xff0c;是一种可层级化管理生产活动的软件系统。它可以实现对生产过程全面的监控、调度、控制和优化&#xff0c;提高生产的效率、质量和安全性。MES系统具有以下几个主…

图像生成新篇章:Stable Diffusion 3 Medium开源评析

摘要 在数字艺术与人工智能的交汇点上&#xff0c;Stable Diffusion 3&#xff08;SD3&#xff09;的开源无疑是一场技术革新的盛宴。就在3月份&#xff0c;我撰写了一篇博文&#xff0c;深入探讨了SD3的技术报告内容与介绍&#xff0c;文章发表在CSDN博客上&#xff0c;https:…

汽车EDI:BRP EDI项目案例

项目背景 BRP Inc.使用EDI&#xff08;电子数据交换&#xff09;来处理其与供应商、客户和合作伙伴之间的业务交流。通过EDI&#xff0c;BRP可以在各种业务流程中自动化数据交换&#xff0c;例如采购订单、发货通知、发票、付款和库存信息等&#xff0c;从而提高操作效率、降低…

【RAG】RAG性能提升之路-RAPTOR:一种构建递归文档树的增强检索方法

背景 检索增强型语言模型&#xff08;RALMs&#xff09;在处理需要不断更新的知识和大量信息的文档时确实展现出了优势。然而&#xff0c;现有的方法在处理长篇文档时存在局限性&#xff0c;主要是因为它们通常只能检索较短的文本片段&#xff0c;这限制了对整体文档上下文的全…

云原生应用开发培训,开启云计算时代的新征程

在云计算时代&#xff0c;云原生应用开发技术已经成为IT领域的热门话题。如果您想要转型至云原生领域&#xff0c;我们的云原生应用开发培训将帮助您开启新征程。 我们的课程内容涵盖了云原生技术的基础概念、容器技术、微服务架构、持续集成与持续发布&#xff08;CI/CD&#…

22 CRT工具安装流程

22 CRT工具安装流程 SecureCRT 9.5 说明书 SecureCRT 9.5是一款由VanDyke Software开发的终端仿真程序。它为Windows、Mac和Linux操作系统提供了强大的SSH&#xff08;Secure Shell&#xff09;客户端功能。SecureCRT 9.5提供了对Telnet、RLogin、Serial和X.509等协议的支持&…

域内攻击 ----> DCSync

其实严格意义上来说DCSync这个技术&#xff0c;并不是一种横向得技术&#xff0c;而是更偏向于权限维持吧&#xff01; 但是其实也是可以用来横向&#xff08;配合NTLM Realy&#xff09;&#xff0c;如果不牵强说得话&#xff01; 那么下面&#xff0c;我们就来看看这个DCSyn…

SAP Web IDE 安装使用

For training SAP Web IDE 是基于 Eclipse 内核的在线开发 IDE&#xff0c;可以使用在线的试用版本&#xff0c;但服务器在德国&#xff0c;访问的网速特别慢。也可以使用 Personal Edition&#xff0c;在本机启动和编写代码。 打开官网下载WEBIDE工具包&#xff0c;包含 Tri…