OOP

鉴于下午要去面试,顺便把OO复习了下。 OOP的三大特征分别是:封装、继承和多态。 继承:传递性(卡车 is a 汽车)、单根性(不可以多继承)和密封性(sealed修饰的类是不能背继承的,叫做密封类)。 当子类继承父类是会隐式调用父类的无参构造函数,如果没有显示的调用,则会报错“Person”方法没有采用“0”个参数的重载。显示调用父类的属性或方法 public Student(string name,int age,string gender,string hobby,string popularity):base(name,age,gender) { //this.Name = name; //this.Age = age; //this.Gender = gender; this.Hobby = hobby; this.Popularity = popularity; } 多态:使用抽象(abstract)类和抽象方法来实现,有抽象方法的类一定是抽象类,但是抽象类中不一定都是抽象方法,也可以包含实体方法。 abstract public class Person{ public abstract string SayHi(); } 抽象方法没有方法体(“{ }”) 在子类中重写SayHi方法 public override string SayHi() { return "大家好,我叫:" + Name ; } 多态的另一种实现方法是虚方法(virtual) public abstract string SayHi(){ return "******"; }; 虚方法中可以包含方法体,可以设置默认值。在子类中可以根据需要用override重写SayHi方法。 多态中还有一个原则:里氏替换原则,可以这么理解汽车派生出卡车,卡车是汽车,但是汽车是卡车确实错误的。可以用“is操作符”和“as操作符”来处理。 is: “asd” is string 如果成立的话则返回TRUE,不成立的话就会报错; as:“asd” is string 如果成立的话则返回TRUE,不成立的话则返回null,并不报错。 以上内容均是本人学习只用,有理解错误的地方欢迎大家指出。

原文地址:https://www.cnblogs.com/tony312ws/p/2127213.html