using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _07抽象类特点 { class Program { static void Main(string[] args) { //1.抽象类、抽象成员必须标记为abstract,不能有实现,连大括号也不能有。 //2.抽象成员必须在抽象类中。 //3.抽象类不能被实例化,实例化后也没有用。 //4.子类继承抽象类后,必须把父类中的抽象abstract成员都重写override。除非子类也是抽象类。 //5.抽象成员访问修饰符不能是private //6.抽象类中可以包含实例成员。实例成员可以不被子类实现。 //7.抽象类是有构造函数的,虽然不能被实例化。 //8.如果父类抽象方法有参数,子类override重写时要传入对应参数,有返回值也类似有返回值。 //父类方法有默认实现,父类需要被实例化时,可以考虑将父类定义为普通类,用虚方法实现多态。 //父类没有默认实现,也不需要实例化,则将父类定义为抽象类。 Student s = new Student(); s.Say(); s.Test("andu"); } } abstract class Person { public abstract void Say(); public abstract void Test(string name); } class Student : Person { public override void Say() { Console.WriteLine("呵呵"); } public override void Test(string name) { Console.WriteLine("你好啊,{0}",name); } } abstract class Teacher : Person { } }
时间: 2024-10-11 10:04:26