首页 > 代码库 > 面向对象 【抽象类】【借口】
面向对象 【抽象类】【借口】
一、抽象类
abstract 抽象
override 重写
父集: abstract 抽象类,抽象方法
子集: override 改写
它就是出来当亲爹的,只为继承而出现,不能被实例化成对象
一般抽象类中只放置抽象方法,只规定了返回类型和参数,不定义具体的内容
抽象类可以包含抽象方法和普通方法,抽象方法一定在抽象类中,抽象类中不一定只有抽象方法
如果要调用抽象类中的普通方法,那么需要子类继承之后实例化再调用
当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。
sealed 和 abstract 关键字不能同时出现
案例
namespace ConsoleApplication1 { public abstract class Ren { public abstract string ChiFan(); } } —————————————————— namespace ConsoleApplication1 { public class Woman : Ren { public override string ChiFan() { return "细嚼慢咽"; ——子类,父类 方法名称要一样 } } } ——————————————————— namespace ConsoleApplication1 { public class Man : Ren { public override string ChiFan() { return "大口吃饭"; } } }
—— 子类、父类 方法名一致
—— 父类中的抽象方法子类中必须要重写
二、接口
interface
可以将程序拆分成多个模块,定义子类必须实现的功能
它就是出来当干爹的,不能被实例化成对象,接口里面不能有实际的方法
类:一定用 public 修饰符, 用 interface 代替类个关键字 class
方法:不能包含普通方法,不用 public, 直接【 数据类型 函数名 (); 】
子类:不需要override关键字,
:父集中的方法都有重写
案例
namespace ConsoleApplication1 { public interface YuLe { string AiHao(); } } ———————————————— namespace ConsoleApplication1 { public interface GongZuo { string JiNeng(); } } ———————————————— namespace ConsoleApplication1 { public class Man : Ren, GongZuo, YuLe { public override string ChiFan() { return "大口吃饭"; } public string JiNeng() { return "敲代码"; } public string AiHao() { return "打游戏"; } } }
—— 子类、父类 方法名一致
—— 父类中的方法子类中都要重写
面向对象 【抽象类】【借口】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。