子类继承父类 构造函数访问问题
2008-06-03 18:40
316 查看
using System;
using System.Collections.Generic;
using System.Text;
namespace staticTest
{
class Program
{
static void Main(string[] args)
{
parrot parrot1 = new parrot();
Console.ReadLine();
}
}
class Bird
{
static Bird() //静态构造函数前面不允许有访问修饰符
{
Console.WriteLine("鸟类的静态构造函数调用了");
}
protected Bird()
{
Console.WriteLine("一个小鸟被创建了");
}
}
class parrot:Bird
{
static parrot()
{
Console.WriteLine("鹦鹉的静态构造函数调用了");
}
public parrot()
{
Console.WriteLine("一个鹦鹉贝创建了");
}
}
}
目前的代码执行结果就是:
鹦鹉的静态构造函数调用了
鸟类的静态构造函数调用了
一个小鸟被创建了
一个鹦鹉贝创建了
因为parrot类 继承了Bird 类 所以当调用 parrot 类的构造函数的时候首先要先调用父类的构造函数,调用完以后才调用本类的构造函数,如果父类的构造函数是private 的话就会出错。当创建对象的时候首先要调用类的静态构造函数。
再来看看这个代码
using System;
using System.Collections.Generic;
using System.Text;
namespace staticTest
{
class Program
{
static void Main(string[] args)
{
parrot parrot2 = new parrot("傻子", 123);
Console.ReadLine();
}
}
class Bird
{
static Bird() //静态构造函数前面不允许有访问修饰符
{
Console.WriteLine("鸟类的静态构造函数调用了");
}
protected Bird()
{
Console.WriteLine("一个小鸟被创建了");
}
protected int _weight;
public Bird(int weight)
{
this._weight = weight;
}
}
class parrot:Bird
{
static parrot()
{
Console.WriteLine("鹦鹉的静态构造函数调用了");
}
public parrot()
{
Console.WriteLine("一个鹦鹉贝创建了");
}
private string _name;
public parrot(string name, int weight)
: base(weight)
{
Console.WriteLine("一只鹦鹉诞生啦名字是{0}体重是{1}",name,weight);
}
}
}
这段代码用了带参数的构造函数,当定义了带参数的构造函数的时候 默认的构造函数就失效了 用base()来调用父类的函数,用于对对象的赋值。
using System.Collections.Generic;
using System.Text;
namespace staticTest
{
class Program
{
static void Main(string[] args)
{
parrot parrot1 = new parrot();
Console.ReadLine();
}
}
class Bird
{
static Bird() //静态构造函数前面不允许有访问修饰符
{
Console.WriteLine("鸟类的静态构造函数调用了");
}
protected Bird()
{
Console.WriteLine("一个小鸟被创建了");
}
}
class parrot:Bird
{
static parrot()
{
Console.WriteLine("鹦鹉的静态构造函数调用了");
}
public parrot()
{
Console.WriteLine("一个鹦鹉贝创建了");
}
}
}
目前的代码执行结果就是:
鹦鹉的静态构造函数调用了
鸟类的静态构造函数调用了
一个小鸟被创建了
一个鹦鹉贝创建了
因为parrot类 继承了Bird 类 所以当调用 parrot 类的构造函数的时候首先要先调用父类的构造函数,调用完以后才调用本类的构造函数,如果父类的构造函数是private 的话就会出错。当创建对象的时候首先要调用类的静态构造函数。
再来看看这个代码
using System;
using System.Collections.Generic;
using System.Text;
namespace staticTest
{
class Program
{
static void Main(string[] args)
{
parrot parrot2 = new parrot("傻子", 123);
Console.ReadLine();
}
}
class Bird
{
static Bird() //静态构造函数前面不允许有访问修饰符
{
Console.WriteLine("鸟类的静态构造函数调用了");
}
protected Bird()
{
Console.WriteLine("一个小鸟被创建了");
}
protected int _weight;
public Bird(int weight)
{
this._weight = weight;
}
}
class parrot:Bird
{
static parrot()
{
Console.WriteLine("鹦鹉的静态构造函数调用了");
}
public parrot()
{
Console.WriteLine("一个鹦鹉贝创建了");
}
private string _name;
public parrot(string name, int weight)
: base(weight)
{
Console.WriteLine("一只鹦鹉诞生啦名字是{0}体重是{1}",name,weight);
}
}
}
这段代码用了带参数的构造函数,当定义了带参数的构造函数的时候 默认的构造函数就失效了 用base()来调用父类的函数,用于对对象的赋值。
相关文章推荐
- 面向对象,继承,父类子类,继承中构造函数问题,对象初始化器
- 关于PHP中构造函数以及子类继承父类构造函数的相关问题
- 关于继承与构造函数重载的问题(初始化子类构造函数中的父类对象)求解答。。。
- 子类继承父类放法访问权限的问题
- Java子类和父类的构造函数继承的问题分析
- Python多类继承中,子类默认继承哪个父类的构造函数__init__
- 子类继承父类,那么子类实例化时对象调用的是父类还是子类的构造函数?
- [python相关]多类继承中子类默认继承哪个父类的构造函数__init__
- 在Page继承类的构造函数中访问Session的问题
- public继承后,父类与子类访问隐藏
- 解决PHP继承无法访问父类静态属性的问题,延迟静态绑定
- java中子类继承父类时是否继承构造函数呢?
- java中子类是否继承父类私有属性的问题
- java之中的四种访问权限和子类如何继承父类特性
- C++类继承之子类调用父类的构造函数的实例详解
- [Unity&继承&序列化&JSON]在JSON数据中,子类继承父类问题
- public继承后,父类与子类访问隐藏 熟练c/c++(三)
- java中子类继承父类时是否继承构造函数
- 在继承中的问题,关于静态代码块,子类和父类的静态代码块的执行情况
- Java继承,在构造函数内对父类初始化的问题