黑马程序员技术交流社区
标题:
虚方法和抽象方法以及接口
[打印本页]
作者:
胡元江
时间:
2013-2-23 15:26
标题:
虚方法和抽象方法以及接口
虚方法和抽象方法接口三者之间的区别,最好是有代码。谢谢。
作者:
吕振
时间:
2013-2-23 16:02
虛函数:由virtual声明,它允许在派生类中被重写,要重写方法,必须先声明为virtual
public class myclass
{
public virtual int myint()
{
函数体;
}
class myclass1:myclass
{
public override int myint()
{
函数体1;
}
注:虚函数中可以有函数体,在子类里可以重写它,也可以不重写他
抽象类、抽象函数:由abstract声明,在抽象类中可以定义抽象方法,抽象方法基本沒有执行代码,
派生类必须重写它,提供其执行代码:
public abstract class myclass
{
public abstract int myint();
}
public class myclass1:myclass
{
public override int myint()
{
函数体;
}
}
注:抽象函数里没有实现代码,如有派生类,必须重写他。--从抽象类派生的非抽象类必须包括继承
的所有抽象方法和抽象访问器的实现。
接口:由interface声明,是特殊的抽象类,是方法、属性、事件和索引符的组合,沒有字段,其成
员无执行方式,无构造函数,不允许进行运算符重载,接口和它的没有任何访问修饰符,它总是公共
的,不能声明为虚拟或静态,继承自接口的派生类必须实现接口中的所有方法
一个接口可从一个或多个基接口继承。
当基类型列表包含基类和接口时,基类必须是列表中的第一项。
实现接口的类可以显式实现该接口的成员。显式实现的成员不能通过类实例访问,而只能通过接口实
例访问
抽象类与接口的区别:
1.抽象类可以包含非抽象方法和抽象方法。这里非抽象方法就是抽象类自己的成员。而接口里都是“
抽象方法”,没有自己的成员
2.一个类可以继承自多个接口,但是只能继承一个类(包括抽象类)。
3.抽象类可以有字段。接口不能
总之,接口就相当于一个纯抽象类
作者:
戴鑫凯
时间:
2013-2-23 16:16
虚方法: 关键字---virtual , 可以让派生类重写本类的方法.
这里有个类,就简单手写了:
public class Person
{
public string _name;
public int _age;
public char _gender;
public virtual void SayHello()
{
Console.WriteLine("我是父类");
}
}
public class Student: Person
{
public string _id;
public override void Sayhello()
{
Console.WriteLine("我是学生子类");
}
}
public class Teacher: Person
{
public string _employee;
public override void Sayhello()
{
Console.WriteLine("我是老师子类");
}
}
有三个类,学生和老师继承自人类,下面我分别实例一个老师和学生,用父类来接收:
Person p1 = new Student();
Person p2 = new Teacher();
现在我调用SayHello这个方法:
p1.SayHello(); --------------------- 我是学生子类
p2.SayHello(); -----------------------我是老师子类
会得到不同的结果,这就是面向对象多态的体现。这是简单的介绍一下噢!
抽象方法跟虚方法类似,但是抽象方法只能存在于抽象类中,且抽象方法没有方法体:
public abstract class Person
{
public string _name;
public abstract void SayHello(); --------分号别忘了!!!
} ------ 写不下了,接下楼.
作者:
戴鑫凯
时间:
2013-2-23 16:17
本帖最后由 pokemon 于 2013-2-23 16:56 编辑
接上楼
如果一个类继承自抽象类,则必须实现抽象类中的所有抽象方法。
接口 ----- Interface
由于一个类最多只能继承另一个类,接口可以使一个类有多个基类。
接口
主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。如果一个类“继承”了某个接口,则必须实现它!
Interface IFlyable
{
void Fly();
}
...一个最简单的接口就好了..,然后就是实现它!
public class Student: Person , IFlyable
{
............................
//最后必须实现这个接口
public override void Fly()
{
Console.WriteLine("我会飞!");
}
} 就先介绍这么多吧,这是我所了解的了,大家一起学习!.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2