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);
    }
}

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

相关推荐
呆呆的小草1 小时前
Cesium距离测量、角度测量、面积测量
开发语言·前端·javascript
uyeonashi1 小时前
【QT系统相关】QT文件
开发语言·c++·qt·学习
MasterNeverDown1 小时前
在C#中的乐观锁和悲观锁
c#·并发·
全栈小52 小时前
【C#】Quartz.NET怎么动态调用方法,并且根据指定时间周期执行,动态配置类何方法以及Cron表达式,有请DeepSeek
c#·.net·quartz.net·deepseek
冬天vs不冷2 小时前
Java分层开发必知:PO、BO、DTO、VO、POJO概念详解
java·开发语言
sunny-ll2 小时前
【C++】详解vector二维数组的全部操作(超细图例解析!!!)
c语言·开发语言·c++·算法·面试
刘大浪2 小时前
uniapp 小程序 学习(一)
学习·小程序·uni-app
猎人everest2 小时前
Django的HelloWorld程序
开发语言·python·django
嵌入式@秋刀鱼3 小时前
《第四章-筋骨淬炼》 C++修炼生涯笔记(基础篇)数组与函数
开发语言·数据结构·c++·笔记·算法·链表·visual studio code
嵌入式@秋刀鱼3 小时前
《第五章-心法进阶》 C++修炼生涯笔记(基础篇)指针与结构体⭐⭐⭐⭐⭐
c语言·开发语言·数据结构·c++·笔记·算法·visual studio code