类的三大特点,封装,继承,多态,
封装:就是将一组相关联的成员封装起来,比如我们的方法,类的封装,封装完以后,可以用不同的对象去调用
protect 修饰符,只能在本类或者子类中去调用
继承:父子关系,子类可以从父类中继承成员,去进行调用
一个子类只能继承一个父类。(后面会讲到接口,一个类可以继承很多接口)
多态,同一个成员,具有不同的表现形式
虚方法和方法的重写。
虚方法:virtual 修饰
重写:override
首先创建个student类 去继承Person
internal class Student:Person
{
public override void PersonMenthod()
{
Console.WriteLine("这是子类中方法的重写");
//base.test(""); //只能调用公共成员
}
}
下面是Person类
internal class Person::Myabstractclass
{
public void Test()
{
Console.WriteLine("父类中的普通方法");
}
public virtual void PersonMenthod()
{
Console.WriteLine("这是父类中的虚方法");
}
private void test(string str)
{
Console.WriteLine("这是父类中的私有方法{0}"+ str);
}
public override void AbstractMethod()
{
Console.WriteLine("抽象方法实现了重写");
}
}
下面是Program类里去调用,实例化student类,就可以调用Person类里的方法
Student st = new Student(); //student类里没有任何成员,因为继承了Person类,因此可以调用person里面的成员
st.Test();
st.PersonMenthod(); //在子类中重写了方法,在哪里调用都是调用的重写后的方法。
this. 和base.
this.调用类下所有成员,包括父类,子类。
base.调用的是父类中的公有成员。
密封类 sealed,密封类无法被继承,比较简单不多啰嗦
部分类, parital 将 一个类分成几个部分。比较简单不多啰嗦
抽象类,abstract :抽象类无法被实例化,(实例化就是创建一个类的对象 并且可以创建构造函数的过程)但是可以创建对象。
下面是创建的抽象类
abstract class Myabstractclass
{
public abstract void AbstractMethod();//抽象方法只能有方法声明,不能有方法体
}
Myabstractclass mac = new Myabstractclass();会报错*/ //无法创建抽象类型的实例
//Myabstractclass mac = new Person();
抽象类虽然无法实例化,但是可以通过调用子类的构造函数开辟空间
调用谁的构造函数开辟空间,就属于哪个类型
//Person P = (Person) mac;
//抽象方法只能有方法声明,不能有方法体。当一个抽象类里有抽象方法的时候,在继承的子类里必须要继承重写
//P.AbstractMethod();
//接口 interface
//C#没有多重继承,只能继承一个父类,但是提供了接口
//接口也可以作为类的成员
//接口中的成员不能有访问修饰符 接口中的方法同样不能有方法体