P24 C# 类

(1)、类修饰符:

new:

public:外部可自由访问

protected: 访问限制在继承链上

internal: 在当前的项目中,可以自由访问,默认的访问级别

private: 只能修饰类的成员类(内部类的可以)

abstract:

sealed: 表示该类不可被继承

static:

(2)、类的继承是使用 " :"符号,只能继承一个父类,但可以实现多个接口,子类是不可以超越父类的访问级别

class A : B{

}

错误示例:

internal class Vehicle {

}

public class Car : Vehicle {

}

(3)、子类是父类的实例,如何判断是不是实例

internal class Program{

static void Main(string[] args){

Vehicle vehicle = new Vehicle();

Object o1 = new Vehicle();

Object o2 = new Car();

//结果是true

Console.WriteLine(o2 is Vehicle);

}

}

class Vehicle {

}

class Car : Vehicle {

}

(4)、在子类中访问父类的内容使用 "base" 关键字

(5)、当父类的构造器是带参数的时候,子类的构造器也必须是带参数的,同时传递参数给父类

public class Vehicle {

public Vehicle(string owner)

{

this.Owner = owner;

}

public string Owner { get; set; }

}

public class Car : Vehicle {

//在初始化时,就已经将参数传递给父类了,并且设置了父类的Owner

public Car(string owner) :base(owner)

{

}

public void ShowOwner() {

}

}

(6)、类的重写,注意关键字 virtual override ,只有同时存在,才会叫重写,一旦重写了方法,那么在调用的时候,都是子类的实例了。

示例:

复制代码
internal class Program
{
    public static void Main(string[] args)
    {
        Vehicle c = new Car();
        
        //结果是:Car is running
        c.Run();
    }
}
复制代码
class Vehicle
{
    public virtual void Run()
    {
        Console.WriteLine("I'm running");
    }
}


class Car : Vehicle
{
    public override void Run()
    {
        Console.WriteLine("Car is running");
    }
}
相关推荐
java叶新东老师1 小时前
goland编写go语言导入自定义包出现: package xxx is not in GOROOT (/xxx/xxx) 的解决方案
开发语言·后端·golang
@蓝莓果粒茶1 小时前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
檀越剑指大厂1 小时前
【Python系列】Flask 应用中的主动垃圾回收
开发语言·python·flask
檀越剑指大厂1 小时前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask
笠码1 小时前
JVM Java虚拟机
java·开发语言·jvm·垃圾回收
橙小花2 小时前
C语言:指针、变量指针与指针变量、数组指针与指针数组
c语言·开发语言
Cyanto2 小时前
MyBatis-Plus高效开发实战
java·开发语言·数据库
艾莉丝努力练剑2 小时前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
3 小时前
3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
算法·3d·unity·c#·游戏引擎·sat
wjs20243 小时前
XML 语法详解
开发语言