关于继承:
两个要点:
1.子类继承父类的属性方法
2.父类成员中被private修饰的私有字段不能被继承(private 即私有访问权限 只限本类成员访问 子类和实例都不能访问)
需要注意的是:
子类不继承父类有参数的构造函数 ,但是会默认调用父类的那个无参的构造函数。
当在父类中创建一个有参数的构造函数时,原本无参数的构造函数被替换,那么
子类就调用不到父类无参的构造函数。
有两个解决办法:
1.再在父类中写一个无参的构造函数。
2.在子类的构造函数中用 base()方法↓
public class Person
{
public Person(string id, int s)
{
}
}
public class Man : Person
{
public Man(string id, int s,int num) : base(id, s)
{
}
}
3.继承的两个特性
1)
单根型
,一个子类只能有一个父类。通俗来讲一个儿子只能有一个爹!
2)
传递性
:爷爷有的爹肯定有,爹有的儿子也会有。。。
还需要注意的是:
1.object类是一切类型的基类。
2.父类只能用自己的成员,不能用子类的。
3.当子类中的一个方法和父类写的一样后,编译器会隐藏父类的方法。