继承: 访问修饰符 class 类名 :类名 一个类只能有一个父类(亲爹) 父类 某个类继承自某个类 子类 派生类 超类 多态: 类的多种形态 父类存在虚方法 virtual 子类重写 override 访问修饰符: public 公共的,只要引用了命名空间就能用 访问级别最高 private 私有的,只能在类的内部进行访问 访问级别最低 internal 默认的,同一个命名空间下可以访问 访问级别次最高 protected 被保护的,类的内部及它的子类中才可以访问 访问级别次最低 ----------------------------------------------------------- 抽象类:abstract 就是用来当亲爹的,不能被实例化对象 抽象方法只能存在于抽象类中 抽象类中不一定只有抽象方法,还可以有普通方法(普通方法可以虚写) 1.创建HuoZhe类 namespace 抽象类和接口 { public abstract class HuoZhe // 写上;public abstract , abstract:摘要 { 写一个string类型的方法,吃饭方法 public string ChiFan() { //return "大口吃饭"; // 返回的内容 } 将其修改为抽象方法:abstract public abstract string ChiFan(); // 相当于已经声明完了 抽象类里不仅有抽象方法,还有普通方法 public virtual string HuXi() { return "鼻子和嘴呼吸"; } } } 2.创建Ren类 namespace 抽象类和接口 { class Ren:HuoZhe,GongZuo,YuLe 要想活着,需要继承活着的方法,吃饭方法,冒号是抽象类,逗号是接口 { 抽象方法,必须要把继承的方法在这写出来,否则报错 然后对这个抽象方法ChiFan进行重写 public override string ChiFan() { throw new NotImplementedException(); 抛出一个新的异常,如果不改,一调这个方法,会抛出一个新的异常 return "用嘴吃饭"; 要的是返回一个string类型,在做HuoZhe } 生成解决方案不成功 Ren不实现GongZuo里的GongZuo1()方法是有错的 所以在这需要把它实现出来 接口里public 不用写override,直接写string类型的GongZuo1 public string GongZuo1() { return ""; } 生成解决方案不成功 Ren不实现YuLe里的YuLe()方法也是有错的 所以在这需要把它实现出来 接口里public 不用写override,直接写string类型的YuLe1 public string YuLe1() { return "听音乐"; } 生成成功 } } 3.创建男人类 namespace 抽象类和接口 { class NanRen : Ren //继承人这个类 { public override string ChiFan() { //return base.ChiFan();返回父级的ChiFan方法 return "大口吃饭"; } } } 4.创建女人类 namespace 抽象类和接口 { class NvRen:Ren //继承人这个类 { public override string HuXi() { return "就爱用鼻子呼吸"; } } } ------------------------------------------------------------- 接口:interface 干爹 不能被实例化对象 接口中只能存在很抽象的方法 string 方法名(); 接口中所有的内容都一定是public 5.创建工作类 namespace 抽象类和接口 { interface GongZuo { //可以添加类的时候把class 改为 interface,也可以直接点击添加类,然后改成接口,也是.cs后缀 //接口是很抽象的,抽象到不允许有私有的,都是公开的 //连访问修饰符都不用写 //直接写方法和返回类型 string GongZuo1(); //这样就声明了方法 } } 6.创建娱乐类 namespace 抽象类和接口 { interface YuLe { string YuLe1(); } } 还有创建的Ren 类里的内容: 生成解决方案不成功 Ren不实现GongZuo里的GongZuo1()方法是有错的 所以在这需要把它实现出来 接口里public 不用写override,直接写string类型的GongZuo1 public string GongZuo1() { return ""; } 生成解决方案不成功 Ren不实现YuLe里的YuLe()方法也是有错的 所以在这需要把它实现出来 接口里public 不用写override,直接写string类型的YuLe1 public string YuLe1() { return "听音乐"; } 生成成功