首页 > 代码库 > 抽象类、借口、构造函数、静态方法成员
抽象类、借口、构造函数、静态方法成员
一、抽象类(abstract)
1、定义:抽象类是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类,它不能生成对象;
抽象类是不完整的,它只能用作基类。在面向对象中中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
2、特点:
-
抽象类不能实例化。
-
抽象类可以包含抽象方法和抽象访问器及非抽象类,但抽象方法一定在抽象方法中。
- 从抽象类派生的非抽象类必须子类继承之后实例化再调用。
-
不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
注:抽象类是减少代码重写时被继承代码重复量,即:抽象类是用来被继承,常与override连用
二、接口(interface)
1、定义:接口是抽象类的变体。在接口中,所有方法都是抽象的,没有一个有程序体。
2、结构:数据类型 函数名();
子类实现接口中的方法,不需要override关键字
例:
static void Main(string[] args) { bird b=new bird(); Console.WriteLine(b.eat()); Console.WriteLine(b.flying());
Console.WriteLine(b.sing()); Console.ReadLine(); } public abstract class fly { public abstract string flying(); public string eat() { return "吃饱了才能飞"; } }
public interface jiao
{
string sing();
}
public class bird :fly,jiao { public override string flying() { return "吃完虫子就要飞"; }
public string sing()
{
return "叽叽喳喳的叫";
}
}
三、构造函数
1、定义:构造函数 ,是一种特殊的方法,即:与类名相同的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
例:无参数构造函数
static void Main(string[] args) { fly b = new fly(); Console.WriteLine(b.Name); Console.ReadLine(); } public class fly { public fly() { _name = "jksd"; } private string _name; public string Name { get { return _name; } set { _name = value; } } }
有参数构造函数
class Program { static void Main(string[] args) { fly b = new fly("kajlk"); Console.WriteLine(b.Name); Console.ReadLine(); } } public class fly { public fly(string s) { _name = s; } private string _name; public string Name { get { return _name; } set { _name = value; } } }
四、静态方法和成员(static)
1、定义:若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法
2、特点:
-
静态方法的调用,是类名后直接加静态方法。实例方法必须将类实例化后,用实例调用该实例方法。
-
静态方法,只能调用类中的其他静态属性和静态方法,不能调用类中的非静态属性和非静态方法。
-
实例方法, 可以调用静态属性和静态方法,也可以调用实例属性和实例方法。
-
静态方法是属于类的必须由类来调用,实例方法是属于实例的必须实例化类后,用类的实例调用。
例:
class Program { static void Main(string[] args) { fly.flying("kldsl;a"); Console.WriteLine(fly._name); Console.ReadLine(); } } public class fly { public static string _name; public static void flying(string s) { _name = s; } }
抽象类、借口、构造函数、静态方法成员
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。