类的继承用法
来源:互联网 发布:iframe跨域调用js方法 编辑:程序博客网 时间:2024/04/29 17:16
class parten
{
public parten()
{
Console.WriteLine("我是基类的无参构造器");
}
public parten(int i)
{
Console.WriteLine("我是基类的带一个整形参数的有参构造器");
}
public parten(string name)
{
Console.WriteLine("我是基类的带一个字符串参数的有参构造器");
}
public parten(int i, string name)
{
Console.WriteLine("我是基类的带两个参数的有参构造器");
}
public void Anomile(string name)
{
Console.WriteLine("这是动物在叫");
}
}
class children:parten
{
public children()
{
Console.WriteLine("我是派生类的无参构造器");
}
public children(int i)
{
Console.WriteLine("我是派生类的带一个整形参数的有参构造器");
}
public children(string name)
{
Console.WriteLine("我是派生类的带一个字符串参数的有参构造器");
}
public children(int i, string name)
{
Console.WriteLine("我是派生类的带两个参数的有参构造器");
}
}
class Program
{
static void Main(string[] args)
{
children ch = new children();
ch.Anomile("ni");//很明显在基类中有个公有的方法,而继承类中是没有任何方法的,但是New
//继承类的时候,虽然继承类没有任何方法但是生成继承类的对象后,当点的时候
//它就会自动有基类中的公有方法。这就是面向对象的继承机制!!!
Console.ReadKey();
}
}
说明:前面的是无重名的方法的时候,那么如果有时,对于基类已有定义的方法,打算重新定义自己的实现。
Child类可以自己重新定义print( )方法的实现。Child的print( )方法覆盖了Parent中的 print 方法。结果是:除非经过特别指明,Parent类中的print方法不会被调用。
3.在Child类的 print( ) 方法中,我们特别指明:调用的是Parent类中的 print( ) 方法。
方法名前面为"base",一旦使用"base"关键字之后,你就可以访问基类的具有公有或者保护权限的成员。 Child类中的print( )方法的执行结果出现上面的第三行和第四行。
4:访问基类成员的另外一种方法是:通过显式类型转换。
在Child类的Main( )方法中的最后一条语句就是这么做的。记住:派生类是其基类的特例。这个事实告诉我们:可以在派生类中进行数据类型的转换,使其成为基类的一个实例。上面代码的最后一行实际上执行了Parent类中的 print( )方法。即:((Parent)child).print( ) ;
5:有两个类一个是基类,一个是继承类,如果基类中有个方法比如说:是printer()方法当然这个 方法是公有的方法,如果在它的继承类中也有一个同名方法,如果这时候不作任何处理的话
编译也能通过但是系统会发出一个没有隐藏基类同名方法的警告,如果想使系统健壮那么必须隐藏基类的同名方法,这时候用到New关键字,形式是:new public void print();这个New关键字一定是在Public关键字之前,这时候默认的是调用的是继承类中的这个同名方法,如果你想调用基类中同名的这个方法的时候,这时候必须(1):如果是个实例方法,必须先生成实例在加上实例名.方法名的形式去调用基类同名方法,形式://访问隐藏基类的 print():
Console.WriteLine(MyBase.print());
(2):如果是静态方法直接用基类名.方法名();即可!
特别注意的是:这种方式同样可以用在字段,属性和事件上!
{
public parten()
{
Console.WriteLine("我是基类的无参构造器");
}
public parten(int i)
{
Console.WriteLine("我是基类的带一个整形参数的有参构造器");
}
public parten(string name)
{
Console.WriteLine("我是基类的带一个字符串参数的有参构造器");
}
public parten(int i, string name)
{
Console.WriteLine("我是基类的带两个参数的有参构造器");
}
public void Anomile(string name)
{
Console.WriteLine("这是动物在叫");
}
}
class children:parten
{
public children()
{
Console.WriteLine("我是派生类的无参构造器");
}
public children(int i)
{
Console.WriteLine("我是派生类的带一个整形参数的有参构造器");
}
public children(string name)
{
Console.WriteLine("我是派生类的带一个字符串参数的有参构造器");
}
public children(int i, string name)
{
Console.WriteLine("我是派生类的带两个参数的有参构造器");
}
}
class Program
{
static void Main(string[] args)
{
children ch = new children();
ch.Anomile("ni");//很明显在基类中有个公有的方法,而继承类中是没有任何方法的,但是New
//继承类的时候,虽然继承类没有任何方法但是生成继承类的对象后,当点的时候
//它就会自动有基类中的公有方法。这就是面向对象的继承机制!!!
Console.ReadKey();
}
}
说明:前面的是无重名的方法的时候,那么如果有时,对于基类已有定义的方法,打算重新定义自己的实现。
Child类可以自己重新定义print( )方法的实现。Child的print( )方法覆盖了Parent中的 print 方法。结果是:除非经过特别指明,Parent类中的print方法不会被调用。
3.在Child类的 print( ) 方法中,我们特别指明:调用的是Parent类中的 print( ) 方法。
方法名前面为"base",一旦使用"base"关键字之后,你就可以访问基类的具有公有或者保护权限的成员。 Child类中的print( )方法的执行结果出现上面的第三行和第四行。
4:访问基类成员的另外一种方法是:通过显式类型转换。
在Child类的Main( )方法中的最后一条语句就是这么做的。记住:派生类是其基类的特例。这个事实告诉我们:可以在派生类中进行数据类型的转换,使其成为基类的一个实例。上面代码的最后一行实际上执行了Parent类中的 print( )方法。即:((Parent)child).print( ) ;
5:有两个类一个是基类,一个是继承类,如果基类中有个方法比如说:是printer()方法当然这个 方法是公有的方法,如果在它的继承类中也有一个同名方法,如果这时候不作任何处理的话
编译也能通过但是系统会发出一个没有隐藏基类同名方法的警告,如果想使系统健壮那么必须隐藏基类的同名方法,这时候用到New关键字,形式是:new public void print();这个New关键字一定是在Public关键字之前,这时候默认的是调用的是继承类中的这个同名方法,如果你想调用基类中同名的这个方法的时候,这时候必须(1):如果是个实例方法,必须先生成实例在加上实例名.方法名的形式去调用基类同名方法,形式://访问隐藏基类的 print():
Console.WriteLine(MyBase.print());
(2):如果是静态方法直接用基类名.方法名();即可!
特别注意的是:这种方式同样可以用在字段,属性和事件上!
- 类的继承用法
- 抽象类继承接口的用法缘由
- 继承于ScritableObject类的用法
- 继承的主要用法
- 继承的用法
- 继承的简单用法
- 多继承的用法
- 继承的用法
- 继承的基本用法
- 继承和super的用法
- OpenERP里面继承的用法
- js中的继承的用法
- 虚拟继承,virtual的用法
- 继承中无参构造的用法
- 继承中无参构造的用法
- 关于子类继承父类的构造函数用法
- C# 继承类中重复属性的用法
- SSH中daoImpl类继承HibernateDaoSupport的用法
- ClearCase故障处理一例:解决eclipsed状态的私有文件不能被删除
- C++中delete和delete[] 的区别
- 够资格和不够资格的疑问
- 面向对象总结
- 这过去的一周
- 类的继承用法
- 关于结构体中零长度数组的问题
- 多态性
- 麻雀虽小,五脏俱全:分析CVS活动情况的小工具(有源码供学习)
- c宏定义的技巧总结
- 女座头市
- Win2003远程终端超过最大连接数的解决方法
- 怎么学好编程?
- 算法的力量