【C#语言入门】19. 什么是类
一、什么是“类”
类是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类类型支持继承,继承是一种机制,它使派生类可以对基类进行扩展和专用化 类也是一种数据类型 代表现实世界中的“种类”
class Program
{
static void Main ( string [ ] args)
{
Student stu1 = new Student ( 1 , "Tom" ) ;
Student stu2 = new Student ( 2 , "Tim" ) ;
stu1. Report ( ) ;
}
}
class Student
{
public static int Amount { get ; set ; }
static Student ( )
{
Amount = 10 ;
}
public Student ( int iD, string name)
{
this . ID = iD;
this . Name = name;
Amount++ ;
}
~ Student ( )
{
Amount-- ;
}
public int ID { get ; set ; }
public string Name { get ; set ; }
public void Report ( )
{
Console. WriteLine ( $"I'm { ID } student, my name is { Name } ." ) ;
}
}
二、类的声明与访问控制
类声明的全貌
C#类声明的位置(99%是生成在名称空间内的;也可以放在所有的显式的名称空间之外;也可以放在类体内,这样就成为了成员类) 声明即定义(C#与Java) 最简单的类声明(必不可少——》class 类名 类体)
类修饰符:new、public、protected、internal、private、abstract、sealed、static internal(如果没有其他修饰符默认internal,代表在本项目里面可以自由访问)、public(代表可以在多个项目里面自由访问)
三、类的继承,类成员访问
类的继承
继承的本质是,继承类对基类在功能上的扩展(extend),横向扩展是对类成员的扩充,纵向扩展是对类成员的重写 只能有一个基类,但可以实现多个其接口 类访问级别对继承的影响 sealed类不能被继承 成员的继承与访问
派生类对继承成员的访问 派生类对基类成员的访问 构造器的不可继承性 面向对象的实现风格
Class-based Prototype-based
class Program
{
static void Main ( string [ ] args)
{
Car car = new Car ( ) ;
Console. WriteLine ( car is Object ) ;
Object o1 = new Vehicle ( ) ;
Object o2 = new Car ( ) ;
}
}
class Vehicle
{
}
class Toy
{
}
class Car : Vehicle
{
}
class Program
{
static void Main ( string [ ] args)
{
RaceCar raceCar = new RaceCar ( ) ;
raceCar. Owner = "Tom" ;
Car car = new Car ( ) ;
Console. WriteLine ( car. Owner) ;
}
}
class Vehicle
{
public Vehicle ( )
{
this . Owner = "N/A" ;
}
public string Owner { get ; set ; }
}
class Car : Vehicle
{
public Car ( )
{
this . Owner = "Car Owner" ;
}
public void ShowOwner ( )
{
Console. WriteLine ( base . Owner) ;
}
}
class RaceCar : Car
{
}
访问级别
类成员的访问级别是以类的访问级别为上限的(类如果是internal,那么类成员最多只能是internal上限) private可以被继承但是无法被访问 protected会将访问级别限制在继承链上,且他是跨程序集的(基类+继承类)。如果protected和internal同时修饰则表示它既可以被继承链访问,又可以被本程序集访问