接口,抽象类,继承与多态性的使用
2012-06-20 21:30
211 查看
演示代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class Program
{
private static void Main(string[] args)
{
ITestzh itestzh = new Testzh();
ITestzh itestdemo = new TestDemo();
itestzh.Insert(); //输出“子类重写父类的Insert方法”
itestdemo.Insert(); //输出”用new隐藏父类的Inser方法“
TestBase t1 = new Testzh();
TestBase t2 = new TestDemo();
t1.Insert(); //输出“子类重写父类的Insert方法”
t2.Insert(); //输出”基类统一实现Insert方法“
//注意 t2.Insert()与itestdemo.Insert()输出的区别
Console.ReadKey();
}
}
//借口统一规范
interface ITest
{
/// <summary>
/// 插入方法
/// </summary>
void Insert();
}
/// <summary>
/// 统一的实体基类
/// 子类共同的操作逻辑
/// </summary>
abstract class TestBase : ITest
{
#region ITest 成员
public virtual void Insert()
{
Console.WriteLine("基类统一实现Insert方法");
}
#endregion
}
//声明借口实现ITest借口
interface ITestzh:ITest{}
/// <summary>
/// Testzh实体操作
/// </summary>
class Testzh:TestBase,ITestzh
{
//重写父类的Insert方法
public override void Insert()
{
Console.WriteLine("子类重写父类的Insert方法");
}
}
class TestDemo : TestBase, ITestzh
{
public new void Insert()
{
Console.WriteLine("用new隐藏父类的Inser方法");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class Program
{
private static void Main(string[] args)
{
ITestzh itestzh = new Testzh();
ITestzh itestdemo = new TestDemo();
itestzh.Insert(); //输出“子类重写父类的Insert方法”
itestdemo.Insert(); //输出”用new隐藏父类的Inser方法“
TestBase t1 = new Testzh();
TestBase t2 = new TestDemo();
t1.Insert(); //输出“子类重写父类的Insert方法”
t2.Insert(); //输出”基类统一实现Insert方法“
//注意 t2.Insert()与itestdemo.Insert()输出的区别
Console.ReadKey();
}
}
//借口统一规范
interface ITest
{
/// <summary>
/// 插入方法
/// </summary>
void Insert();
}
/// <summary>
/// 统一的实体基类
/// 子类共同的操作逻辑
/// </summary>
abstract class TestBase : ITest
{
#region ITest 成员
public virtual void Insert()
{
Console.WriteLine("基类统一实现Insert方法");
}
#endregion
}
//声明借口实现ITest借口
interface ITestzh:ITest{}
/// <summary>
/// Testzh实体操作
/// </summary>
class Testzh:TestBase,ITestzh
{
//重写父类的Insert方法
public override void Insert()
{
Console.WriteLine("子类重写父类的Insert方法");
}
}
class TestDemo : TestBase, ITestzh
{
public new void Insert()
{
Console.WriteLine("用new隐藏父类的Inser方法");
}
}
}
相关文章推荐
- 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)
- 数据底层操作告诉了我们接口,抽象类,继承与多态性的使用
- 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用
- 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用
- Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
- Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性
- 继承中的“虚方法,抽象类,接口”使用场景
- 抽象类 接口区别 多态性 继承 封装
- Java基础 面向对象(3) 继承 final关键字 抽象类 接口
- 基础_C# 继承,抽象类,密封类,类的多态性
- 使用抽象类和接口的优解
- 习题--抽象类、继承、接口综合
- C#语言使用多态(接口与override) ——帮您剔除对面向对象多态性的疑惑
- 《day09---继承-抽象类-接口》
- 8.python之面相对象part.4(接口继承的思想设计,这种东西也叫抽象类)
- java类、抽象类、接口、继承和对象解析
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- Java基础(面向对象三——继承、final关键字、抽象类、接口)
- 继承--抽象类--接口--子类构造方法代码执行顺序
- 什么时候使用接口?什么时候使用抽象?选择Java接口还是抽象类