子类构造函数
//调用子类构造函数,首先先去父类的不带参数构造参数
//想调用父类的带参数构造函数,在子类的构造函数添加:base(参数1,参数2)调用父类有参数构造函数
//创建子类的对象
Student s1 = new Student(); //调用子类构造函数,首先先去父类的不带参数构造参数
Student s2 = new Student("11", 10);// 调用的是子类带参数构造函数,首先调用还是父类不带参数的构造函数,
// 能不能调用子类的有参数构造能够触发父类有参数构造函数,子类如何调用父类的构造
Student s3 = new Student("张三"); //调用带一个参数构造
Console.ReadKey();
}
}
class People
{
public string Name { get; set; }
public int Age { get; set; }
public People()
{
Console.WriteLine("People父类构造函数");
}
public People(string a,int b)
{
//带参数的构造函数
Console.WriteLine("People带参数的构造函数");
Name = a;
Age = b;
}
}
class Student:People
{
// Name 和Age属性可以被继承过来
public int Id { get; set; }
public Student()
{
Console.WriteLine("Student子类构造函数");
}
public Student(string a,int b )
{
Console.WriteLine("子类的带参数的构造函数");
}
//this 当前类对象
//base 父类对象
public Student(string a):base (a,20)
{
//调用这个方法触发父类带参数构造函数
Console.WriteLine(a+"验证在子类如果调用父类有参数的构造 base基类 ,父类");
}
//类成员和方法
分为静态和非静态俩大类
//静态成员或方法 找类名.进行使用,存储类中,是类共有,
//非静态的成员或方法 找对象.进行使用 存储在每一个对象里面
//静态方法 不能访问非静态成员或方法,可以访问静态的成员或方法
//非静态方法:可以访问静态的成员或方法,也可以访问非静态的方法或成员
People p1 = new People();
p1.Name = "张三";// 对象.属性
People.Count = 20;//类.属性
p1.Test1(); //非静态方法
People.Test2();// 静态方法调用
Console.ReadKey();
}
}
public class People
{
public string Name { get; set; } //非静态成员
public static int Count { get; set; } // 静态成员
public void Test1() //非静态方法:可以访问静态的成员或方法,也可以访问非静态的方法或成员
{
Console.WriteLine("我是非静态方法Test1");
Console.WriteLine(this.Name+"-----"); //this在本类里面可以this代表当前对象,this在本类可以省掉
Console.WriteLine(Count+"-------");
People.Test2();//People在本类可以省掉
}
public static void Test2()//静态方法 不能访问非静态成员或方法,可以访问静态的成员或方法
{
Console.WriteLine("我是静态方法Test2");
Console.WriteLine(Count+"+++++");
//Console.WriteLine(this.Name+"+++++++");
// Test2(); 不要在自己方法里面调用自己 导致死循环
}