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

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

相关推荐
翔云 OCR API1 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
V***u4531 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
roman_日积跬步-终至千里1 小时前
【强化学习基础(2)】被动强化学习:学习价值函数
学习
这是程序猿2 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦2 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学2 小时前
C++ --- 多态
开发语言·c++
颜*鸣&空2 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt
逢考必过@k2 小时前
6级550学习ing
学习
槁***耿2 小时前
JavaScript在Node.js中的事件发射器
开发语言·javascript·node.js
U***49832 小时前
JavaScript在Node.js中的Strapi
开发语言·javascript·node.js