interface abstract与virtual
interface用来声明接口
1.只提供一些方法规约,不提供方法主体
如
public interface IPerson
{
void getName();//不包含方法主体
}
2.方法不能用public abstract等修饰,无字段变量,无构造函数。
3.方法可包含参数
如
public interface IPerson
{
void getAge(string s);
}
一个例子(例1):
public interface IPerson
{
IPerson(); //错误
string name; //错误
public void getIDcard();//错误
void getName(); //right
void getAge(string s); //right
}
实现interface的类
1.与继承类的格式一致,如 public class Chinese:IPerson{}
2.必须实现interface中的各个方法
例2,继承例1
public class Chinese:IPerson
{
public Chinese(){} //添加构造
public void getName(){} //实现getName()
public void getAge(string s){} //实现getAge()
}
abstract声明抽象类、抽象方法
1.抽象方法所在类必须为抽象类
2.抽象类不能直接实例化,必须由其派生类实现。
3.抽象方法不包含方法主体,必须由派生类以override方式实现此方法,这点跟interface中的方法类似
如
public abstract class Book
{
public Book()
{
}
public abstract void getPrice(); //抽象方法,不含主体
public virtual void getName() //虚方法,可覆盖
{
Console.WriteLine("this is a test:virtual getName()");
}
public virtual void getContent() //虚方法,可覆盖
{
Console.WriteLine("this is a test:virtual getContent()");
}
public void getDate() //一般方法,若在派生类中重写,须使用new关键字
{
Console.WriteLine("this is a test: void getDate()");
}
}
public class JavaBook:Book
{
public override void getPrice() //实现抽象方法,必须实现
{
Console.WriteLine("this is a test:JavaBook override abstract getPrice()");
}
public override void getName() //覆盖原方法,不是必须的
{
Console.WriteLine("this is a test:JavaBook override virtual getName()");
}
}
测试如下:
public class test
{
public test()
{
JavaBook jbook=new JavaBook();
jbook.getPrice(); //将调用JavaBook中getPrice()
jbook.getName(); //将调用JavaBook中getName()
jbook.getContent(); //将调用Book中getContent()
jbook.getDate(); //将调用Book中getDate()
}
public static void Main()
{test t=new test();
}
}
virtual标记方法为虚方法
1.可在派生类中以override覆盖此方法
2.不覆盖也可由对象调用
3.无此标记的方法(也无其他标记),重写时需用new隐藏原方法
abstract与virtual: 方法重写时都使用 override 关键字
interface中的方法和abstract方法都要求实现
转载于:https://www.cnblogs.com/delikesi/archive/2009/01/21/1379268.html
interface abstract与virtual相关推荐
- c#中的interface abstract 与 virtual(转)
interface用来声明接口 1.只提供一些方法规约,不提供方法主体. 如: public interface IPerson { void getName();//不包含方法主体 } 2 ...
- c#中的interface abstract与virtual的介绍与使用
abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现. 1:interface用来声明接口 1.1.只提供一些 ...
- c#中的interface abstract与virtual
abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现 interface用来声明接口 1.只提供一些方法规约, ...
- c#中abstract与virtual的区别
1.abstract方法只能在抽象类中声明,虚方法则不是. abstract方法必须在派生类中重写,而virtual则不必 2.abstract方法不能声明方法实体, abstrac ...
- c#中的interface abstract virtual override和new
from:(http://hi.baidu.com/21tian/blog/item/aabfae6ed4a675de81cb4ab4.html) interface用来声明接口 1.只提供方法的规则 ...
- (转)C#中的Abstract和Virtual函数区分,因我老弄不明白这个问题,所以转到这儿
发现很多朋友对于C#中的Abstract和Virtual函数区分得不是很清楚,下面我通过两段代码让大家看看这两者之间到底有什么区别~~ 开发环境: VS.net 2005 使用方法: 用以下代码覆盖p ...
- C#中Abstract和Virtual使用详解
转载自: https://www.cnblogs.com/vaevvaev/p/6911788.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区 ...
- (转)C#中Abstract和Virtual
转:http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用, ...
- C#中Abstract和Virtual(转载)
在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual ...
最新文章
- PHP“Cannot use object of type stdClass as array”
- X@X.X域名转向的实现
- Database Connection String
- 转载:【opencv入门教程之三】:组件结构
- building a blog
- 天天学到夜里12点,感觉越学越迷茫,怎么办?
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_3_字符输出流_Writer类FileWriter类...
- 社交网络影响力最大化
- android调用webservice,Android开发调用WebService的方法示例
- 花音机器人_氧叔在“难红难在哪儿”系列中分析曾黎时提到:
- 易到实际控制人温晓东成老赖:与贾跃亭曾是盟友 如今反目
- Kmeans 算法 收敛
- r730xd外置光驱安装linux,PowerEdge r730xd 安装centos 6.7
- suse linux 11 xdm图形化,suse xdm 设置
- mysql 表聚合_Mysql分表之后的聚合统计
- Python中基本输入和输出
- Ubuntu20.04裸机上配置单机 Pulsar2.7.0 成功并生产消费消息
- 不眠者-泽队:广东省工科赛—全地形越障排爆组(开源7天)
- 数据结构——树(习题篇)
- #define宏的边际效应