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");
    }
}
相关推荐
Coding小公仔2 小时前
C++ bitset 模板类
开发语言·c++
小赖同学啊2 小时前
物联网数据安全区块链服务
开发语言·python·区块链
shimly1234562 小时前
bash 脚本比较 100 个程序运行时间,精确到毫秒,脚本
开发语言·chrome·bash
葬歌倾城2 小时前
JSON的缩进格式方式和紧凑格式方式
c#·json
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
new_zhou3 小时前
Windows qt打包编译好的程序
开发语言·windows·qt·打包程序
ye903 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat
武昌库里写JAVA3 小时前
Oracle如何使用序列 Oracle序列使用教程
java·开发语言·spring boot·学习·课程设计
showyoui4 小时前
Python 闭包(Closure)实战总结
开发语言·python