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");
    }
}
相关推荐
网络安全研发随想4 分钟前
C语言核心结构+难点精讲+工程技巧
c语言·开发语言·算法
归海_一刀5 分钟前
【Unity动态换装骨骼合并】
unity·c#·游戏引擎
superior tigre17 分钟前
C++学习:六个月从基础到就业——面向对象编程:虚函数与抽象类
开发语言·c++·学习
ademen23 分钟前
关于 IntelliJ IDEA 中频繁出现的 Kotlin 及其核心作用
java·开发语言·kotlin
m0_zj1 小时前
41.[前端开发-JavaScript高级]Day06-原型关系图-ES6类的使用-ES6转ES5
开发语言·javascript·es6
海棠蚀omo1 小时前
C++笔记-list
开发语言·c++·笔记
烟雨柳成烟1 小时前
C++学习Day0:c++简介
开发语言·c++·qt·学习
末央&2 小时前
【C++】特化妙技与分文件编写 “雷区”
开发语言·c++·算法
一个天蝎座 白勺 程序猿2 小时前
Python(19)Python并发编程:深入解析多线程与多进程的差异及锁机制实战
开发语言·python