基本类型--接口(一、您了解接口继承吗?)
2008-05-22 17:46
253 查看
14.1类和接口继承
14.2定义接口
14.3接口的继承
public static class Program
{
static void Main(String[] args)
{
//-------------------------
Console.WriteLine("---第一个例子---");
BaseClass b = new BaseClass();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//--------------------------
Console.WriteLine("---第二个例子---");
SonOne s1 = new SonOne();
s1.fun1();
s1.fun2();
((Itest)s1).fun1();
((Itest)s1).fun2();
//----------------------------
Console.WriteLine("---第三个例子---");
b = new SonOne();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//----------------------------
Console.WriteLine("---第四个例子---");
SonTwo s2 = new SonTwo();
s2.fun1();
s2.fun2();
((Itest)s2).fun1();
((Itest)s2).fun2();
//----------------------------
Console.WriteLine("---第五个例子---");
b = new SonTwo();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//----------------------------
Console.ReadLine();
}
}
public interface Itest
{
void fun1();
void fun2();
}
//1.BaseClass必须实现Itest中的所有方法 fun1,fun2
//2.应将接口方法标记为virtual,如果不显示标记,编译器会把它标记为virtual和sealed。这样派生类就无法重写接口方法了。
// 派生类可以重新继承同一个接口,并提供自己的实现。
internal class BaseClass : Itest
{
//fun1将被标记为sealed,不能被重写
public void fun1()
{
Console.WriteLine("BaseClass.fun1");
}
public virtual void fun2()
{
Console.WriteLine("BaseClass.fun2");
}
}
internal class SonOne : BaseClass
{
//派生类无法重写基类方法fun1
new public void fun1()
{
Console.WriteLine("SonOne.fun1");
}
//派生类可以重写基类方法fun2
public override void fun2()
{
Console.WriteLine("SonOne.fun2");
}
}
internal class SonTwo : BaseClass, Itest
{
//派生类无法重写基类方法fun1,new表示重新实现Itest的fun1
new public void fun1()
{
Console.WriteLine("SonOne.fun1");
}
//派生类可以重写基类方法fun2
public override void fun2()
{
Console.WriteLine("SonOne.fun2");
}
}
结果:
14.2定义接口
14.3接口的继承
public static class Program
{
static void Main(String[] args)
{
//-------------------------
Console.WriteLine("---第一个例子---");
BaseClass b = new BaseClass();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//--------------------------
Console.WriteLine("---第二个例子---");
SonOne s1 = new SonOne();
s1.fun1();
s1.fun2();
((Itest)s1).fun1();
((Itest)s1).fun2();
//----------------------------
Console.WriteLine("---第三个例子---");
b = new SonOne();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//----------------------------
Console.WriteLine("---第四个例子---");
SonTwo s2 = new SonTwo();
s2.fun1();
s2.fun2();
((Itest)s2).fun1();
((Itest)s2).fun2();
//----------------------------
Console.WriteLine("---第五个例子---");
b = new SonTwo();
b.fun1();
b.fun2();
((Itest)b).fun1();
((Itest)b).fun2();
//----------------------------
Console.ReadLine();
}
}
public interface Itest
{
void fun1();
void fun2();
}
//1.BaseClass必须实现Itest中的所有方法 fun1,fun2
//2.应将接口方法标记为virtual,如果不显示标记,编译器会把它标记为virtual和sealed。这样派生类就无法重写接口方法了。
// 派生类可以重新继承同一个接口,并提供自己的实现。
internal class BaseClass : Itest
{
//fun1将被标记为sealed,不能被重写
public void fun1()
{
Console.WriteLine("BaseClass.fun1");
}
public virtual void fun2()
{
Console.WriteLine("BaseClass.fun2");
}
}
internal class SonOne : BaseClass
{
//派生类无法重写基类方法fun1
new public void fun1()
{
Console.WriteLine("SonOne.fun1");
}
//派生类可以重写基类方法fun2
public override void fun2()
{
Console.WriteLine("SonOne.fun2");
}
}
internal class SonTwo : BaseClass, Itest
{
//派生类无法重写基类方法fun1,new表示重新实现Itest的fun1
new public void fun1()
{
Console.WriteLine("SonOne.fun1");
}
//派生类可以重写基类方法fun2
public override void fun2()
{
Console.WriteLine("SonOne.fun2");
}
}
结果:
相关文章推荐
- 基本类型--接口(一、您了解接口继承吗?)
- 一个类继承一个抽象类,然后在该类中添加一个接口类型的变量...
- JAVA 继承基本类、抽象类、接口
- Flink类型系统的根及基本接口
- JAVA 继承基本类、抽象类、接口
- [Unity&C#&接口]通过接口调用不同类型 物体 的继承了接口的组件
- 基本类型--接口(二、EIMI)
- 驯服 Tiger: 集合框架 了解新的集合类型及现有类和接口的附加特性
- 了解WINDOWS API基本数据类型
- OC学习:OC_中基本数据类型和结构体的封装(NSNumber继承与NSValue)
- JAVA 线程的两种基本实现方法(继承Thread类和实现Runnable接口)
- TypeScript:基本类型和接口
- JAVA 继承基本类、抽象类、接口
- JavaScript 深入了解基本类型和引用类型的值
- JAVA 继承基本类、抽象类、接口
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义
- Java四类八种基本数据类型进一步了解Java
- 接口继承的值类型和引用类型
- java基础: 基本数据类型前最好了解 原码、反码、补码
- javaSE_8系列博客——Java语言的特性(五)--接口和继承(4)--使用接口作为类型