继承
5、继承
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类。
student teacher driver 子类 派生类
person                 父类 基类
子类继承了父类,那么子类从父类那里继承了什么?
首先:子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
问题:子类有没有继承父类的构造函数?
答:子类并没有继承父类的构造函数,但是,子类会默认的调用父类的无参数的构造函数,创建父类对象,让子类可以使用父类中的成员。
所以,如果父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错。
解决办法:
1)在父类中重新写一个无参数的构造函数。
2)在子类中显示的调用父类的构造函数,使用关键字:base()
6、继承的特性
1)继承的单根性:一个子类只能有一个父类。
2)继承的传递性
7、查看类图
8、object是所有类的基类
public class Person
{
	private string _name;
	public string Name
	{
		get{return _name;}
		set{_name=value;}
	}
	private int _age;
	public int Age
	{
		get{return _age;}
		set{_age=value;}
	}
	private char _gender;
	public char Gender
	{
		get{return _gender;}
		set{_gender=value;}
	}
	public Persion(string name,int age,char gender)
	{
		this.Name=name;
		this.Age=age;
		this.Gender=gender;
	}
}
public class Reporter:Person
{
	private string _hobby;
	public string Hobby
	{
		get{return _hobby;}
		set{_hobby=value;}
	}
	public void ReporterSayHello()
	{
		Console.WriteLine("我叫{0},我是一名狗仔,我的爱好是{1},我是{2}生,我今年{3}岁。"this.Name,this.Hobby,this.Gender,this.Age);
	}
	public Reporter(string name,int age,char gender,string hobby):base(name,age,gender)
	{
		this.Hobby=hobby;
	}
}
Peporter rep=new Reporter("狗仔",34,‘男’,3);
rep.ReporterSayHello();
10、new关键字
1)创建对象
2)隐藏从父类那里继承过来的同名成员。
隐藏的后果就是子类调用不到父类的成员。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号