C# & Unity 面向对象补全计划 之 继承(字段与属性)

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正

本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝

Q:为什么要单讲继承字段与属性,不讲继承方法了吗???

A:因为继承方法离不开多态,多态相对于继承又是新的内容,容易混淆概念

1.继承的介绍

在 C# 中,继承是面向对象编程的一个重要概念。它允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的重用和扩展

大大大前提是,你需要让父类和子类在同一命名空间,就比如:

2 继承字段

首先,对于继承的字段等可以采用protected修饰符保证访问权限和安全性

C# & Unity 面向对象补全计划 之 访问修饰符-CSDN博客

其次,继承而来的字段可以在子类的构造函数,方法等中使用

除非是静态字段,不然无法给子类的字段赋值,别犯傻

使用栗子:

比如我现在有一个房子类,其有两个字段:标准地基长度,标准地基宽度

商业住房和住宅住房基于房子的标准地基长款进行修改

房子类:

cs 复制代码
class Houes {
    protected int baseSubgradeLength;
    protected int baseSubgradeWeigth;
    public Houes() {

        baseSubgradeLength = 100;
        baseSubgradeWeigth = 100;
    }

}

住宅和商业地基的继承与修改

cs 复制代码
Dwelling dwelling = new Dwelling(); 
Commerce commerce =new Commerce();

class Houes {
    protected int baseSubgradeLength;
    protected int baseSubgradeWeigth;
    public Houes() {

        baseSubgradeLength = 100;
        baseSubgradeWeigth = 100;
    }

}
class Dwelling : Houes {

    public Dwelling() {
        Console.WriteLine("{0}{1}", baseSubgradeLength += 50, baseSubgradeWeigth += 50);


    }

}
class Commerce : Houes {

    public Commerce() {

        Console.WriteLine("{0}{1}", baseSubgradeLength += 100, baseSubgradeWeigth += 100);
    }
}

3.继承属性

现在,为了房子地基的字段更加安全,有关部门设置为私有变量,只给出属性接口去修改

商业类和住宅类还是想修改地基长宽,应该怎么办?

cs 复制代码
class Houes {
    private int baseSubgradeLength;
    private int baseSubgradeWeigth;
    public Houes() {

        baseSubgradeLength = 100;
        baseSubgradeWeigth = 100;
    }
    protected int SubgradeL
        { 
    get => baseSubgradeLength; 
    set => baseSubgradeLength = value;
  
    }
    protected int SubgradeWeigth
        { 
    get=> baseSubgradeWeigth; 
    set => baseSubgradeWeigth = value;
    }

}

还是像字段一样,在构造函数里直接通过继承来的属性访问器修改就行了

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

Dwelling dwelling = new Dwelling(); 
dwelling.
Commerce commerce =new Commerce();

class Houes {
    private int baseSubgradeLength;
    private int baseSubgradeWeigth;
    public Houes() {

        baseSubgradeLength = 100;
        baseSubgradeWeigth = 100;
    }
    protected int SubgradeL
        { 
    get => baseSubgradeLength; 
    set => baseSubgradeLength = value;
  
    }
    protected int SubgradeWeigth
        { 
    get=> baseSubgradeWeigth; 
    set => baseSubgradeWeigth = value;
    }

}
class Dwelling : Houes {

    
    public Dwelling() {
      
        Console.WriteLine("{0}{1}", SubgradeL += 50, SubgradeWeigth += 50);
    }

}
class Commerce : Houes {

    public Commerce() {


        Console.WriteLine("{0}{1}", SubgradeL  += 100, SubgradeWeigth += 100);
    }
}

好了,现在字段和属性部分你驾轻就熟了,下一篇文章就是关于继承方法了

相关推荐
冷雨夜中漫步5 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
盐焗西兰花6 小时前
鸿蒙学习实战之路-Reader Kit修改翻页方式字体大小及行间距最佳实践
学习·华为·harmonyos
暖馒6 小时前
Modbus应用层协议的深度剖析
网络·网络协议·c#·wpf·智能硬件
QiZhang | UESTC6 小时前
学习日记day76
学习
久邦科技6 小时前
20个免费电子书下载网站,实现电子书自由(2025持续更新)
学习
m0_736919107 小时前
C++代码风格检查工具
开发语言·c++·算法
2501_944934737 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
Gain_chance7 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
黎雁·泠崖7 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
Gain_chance8 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习