面向对象编程

it2025-04-23  19

 

访问修饰符

public                        无限制

private                      类内部访问

protected                  类和它的派生类可以访问

internal                      位于同一个程序集内可以访问   

对象构造器

       对象构造器又叫实例构造器或构造方法,对象构造器用来初始化对象的状态,如果类没有定义构造器,则编译器会自动生成一个无参的对象构造器,如果类已经定义了类型的对象构造器,则边一起不会自动为类生成一个无参的对象构造器。

类的对象构造器中可以使用this关键字调用本类中定义的其他对象构造器。

例如:

class Car { public string carName; public string carColor; public Car(string carname) { this.carName = carname; } public Car(string carname,string carcolor):this(carname) { this.carColor = carcolor; } }

Car(string,string)对象构造器使用this关键字调用Car(string)构造器,在调用Car(string,string)对象构造器时,会先调用Car(string)构造器初始化对象状态,然后才会调用Car(String,string)

对象的状态和行为:字段方法和属性

方法重载:

public void Run() { Console.WriteLine("汽车跑起来!"); } public void Run(int i) { Console.WriteLine("{0}辆汽车跑起来",i); } public void Run(string name) { Console.WriteLine("{0}汽车跑起来!",name); }

属性封装字段

C#中的属性提供了对字段的封装,属性内部包含一个get访问器和一个set访问器。如果属性中只有get访问器,那么这个属性是只读的,如果属性中只有set访问器,那么字段是只写的,如果属性中既有set访问器又有get访问器,那么这个属性是可以可读可写的。set访问器中的Value是个关键字,代表当前要赋的值。

class Program { static void Main(string[] args) { Student student = new Student(); student.Age = 24; student.Name = "霸气"; Console.WriteLine("学生的年龄是:{0},学生的姓名是:{1}",student.Age,student.Name); student.Age = -1; student.Name = string.Empty; Console.WriteLine("学生的年龄是:{0},学生的姓名是:{1}",student.Age,student.Name); Console.ReadLine(); } } class Student { private string name; private int age; public string Name { get { return name; } set { name = value.Length > 0 ? value : name; } } public int Age { get { return age; } set { age = value > 0 ? value : age; } } } View Code

索引器

class Test

{

   private string[] Test=new string[5];

   public string this[int i]

{

     get{return Test[i]};

    set{Test[i]=value};

}

}  

用的时候this是类名 例如Test test=new Test();  test[0]

属性是对字段的修改           

继承:代码的重用

类可以从另外一个类继承,这就是说,这个类,拥有它继承的类的所有成员(初构造方法外)。利用类的继承机制,程序开发人员在已有类的基础上构造新类。

 

class Program { static void Main(string[] args) { Employee employee = new Employee(); employee.name = "王小二"; employee.timeCard(); Manager manager = new Manager(); manager.name = "王小三"; manager.timeCard(); manager.allot(); Console.ReadLine(); } } class Employee { public string name; public void timeCard() { Console.WriteLine("{0}已经考勤",name); } } class Manager : Employee { public void allot() { Console.WriteLine("{0}正在分配任务",name); } } View Code

 

 

 

转载于:https://www.cnblogs.com/lovezhangyu/p/3372796.html

相关资源:《C++面向对象程序设计》课后习题答案详解
最新回复(0)