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