C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)
1、抽象类
抽象类关键词 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 "大口吃饭"; } } }
2、接口
关键词 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 "打游戏"; } } }
—— 子类、父类 方法名一致
—— 父类中的方法子类中都要重写
3、构造函数
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象(为对象成员变量赋初始值),
每一个类都有构造函数,类实例化的过程就是执行构造函数的过程,一个类可以有多个构造函数 ,
构造函数一定不能是静态的
public class Test1 { public Test1() // 什么都没有的一般默认隐藏, public 方法名 (没有数据类型) { // 方法名与类名一致,text1() 括号中可以有参数 } } text1 t = new text1( ); //new text1( ); 实例化过程
4、重载:
关键词 overload
构造函数的方法名一样,参数个数不同,或参数类型不同
public class text2 { public text2 ( string a , string b ) { return a + b ; } public text2 ( int a , int b ) { return a + b ; } }
5、静态方法和静态成员
关键词 static
静态方法是属于类的,不属于类下面的对象。
直接用: 类名 . 静态方法
public class text3 { public static string haha ( ) { return "哈哈哈"; } } text3.haha ( ); //调用,直接通过类名点出
非静态方法
需要实例化对象
成员都是属于对象的,用对象调用
静态方法
不需要实例化对象
静态成员是属于类的,用类名调用
注: 静态方法里面不能包含普通成员
普通方法里面可以包含静态成员
用处:
为了简便,连接数据库的时候,造连接对象类,使用静态属性直接返回连接对象。
两个类之间传递信息
不允许创建对象的类(对创建对象的个数有限制)